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