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