def process_decorator(*nodes, &block)
opts = nodes.last.is_a?(Hash) ? nodes.pop : {}
all_nodes = statement.parameters.select do |p|
p.is_a? YARD::Parser::Ruby::AstNode
end
all_nodes.each do |param|
parse_block param if param.call? or param.def?
end
selected_nodes =
if nodes.empty?
all_nodes
elsif (nodes.count == 1 and nodes.first == nil)
[]
else
nodes
end
decorated_methods = selected_nodes.map { |param|
process_decorator_parameter param, opts, &block
}.flatten
statement.define_singleton_method :decorators do
decorated_methods.map { |h| h[:node] }
end
decorated_methods
end