lib/yard/handlers/ruby/legacy/method_handler.rb in yard-0.5.8 vs lib/yard/handlers/ruby/legacy/method_handler.rb in yard-0.6.0

- old
+ new

@@ -1,5 +1,6 @@ +# (see Ruby::MethodHandler) class YARD::Handlers::Ruby::Legacy::MethodHandler < YARD::Handlers::Ruby::Legacy::Base handles TkDEF process do nobj = namespace @@ -11,14 +12,17 @@ args = tokval_list(YARD::Parser::Ruby::Legacy::TokenList.new(args), :all) args.map! {|a| k, v = *a.split('=', 2); [k.strip, (v ? v.strip : nil)] } if args else raise YARD::Parser::UndocumentableError, "method: invalid name" end - + # Class method if prefixed by self(::|.) or Module(::|.) if meth =~ /(?:#{NSEPQ}|#{CSEPQ})([^#{NSEP}#{CSEPQ}]+)$/ - mscope, meth = :class, $1 - nobj = P(namespace, $`) unless $` == "self" + mscope, meth, prefix = :class, $1, $` + if prefix =~ /^[a-z]/ && prefix != "self" + raise YARD::Parser::UndocumentableError, 'method defined on object instance' + end + nobj = P(namespace, prefix) unless prefix == "self" end obj = register MethodObject.new(nobj, meth, mscope) do |o| o.visibility = visibility o.source = statement