lib/yard/handlers/ruby/method_handler.rb in yard-0.7.5 vs lib/yard/handlers/ruby/method_handler.rb in yard-0.8.0
- old
+ new
@@ -1,32 +1,26 @@
# Handles a method definition
class YARD::Handlers::Ruby::MethodHandler < YARD::Handlers::Ruby::Base
handles :def, :defs
process do
+ meth = statement.method_name(true).to_s
+ args = format_args
+ blk = statement.block
nobj = namespace
mscope = scope
if statement.type == :defs
if statement[0][0].type == :ident
raise YARD::Parser::UndocumentableError, 'method defined on object instance'
end
- meth = statement[2][0]
nobj = P(namespace, statement[0].source) if statement[0][0].type == :const
- args = format_args(statement[3])
- blk = statement[4]
mscope = :class
- else
- meth = statement[0][0]
- args = format_args(statement[1])
- blk = statement[2]
end
nobj = P(namespace, nobj.value) while nobj.type == :constant
obj = register MethodObject.new(nobj, meth, mscope) do |o|
- o.visibility = visibility
- o.source = statement.source
- o.signature = method_signature(meth)
+ o.signature = method_signature
o.explicit = true
o.parameters = args
end
# delete any aliases referencing old method
@@ -73,23 +67,24 @@
end
parse_block(blk, :owner => obj) # mainly for yield/exceptions
end
- def format_args(args)
- args = args.jump(:params)
+ def format_args
+ args = statement.parameters
params = []
params += args.required_params.map {|a| [a.source, nil] } if args.required_params
params += args.optional_params.map {|a| [a[0].source, a[1].source] } if args.optional_params
params << ["*" + args.splat_param.source, nil] if args.splat_param
params += args.required_end_params.map {|a| [a.source, nil] } if args.required_end_params
params << ["&" + args.block_param.source, nil] if args.block_param
params
end
- def method_signature(method_name)
- if statement[1]
- "def #{method_name}(#{statement[1].jump(:params).source})"
+ def method_signature
+ method_name = statement.method_name(true)
+ if statement.parameters.any? {|e| e }
+ "def #{method_name}(#{statement.parameters.source})"
else
"def #{method_name}"
end
end
end
\ No newline at end of file