Object
Alternative NameDescriptor implementation which doesn’t require class/module names to be properly capitalized.
Rules:
#foo: instance method foo
.foo: method foo (either singleton or instance)
::foo: singleton method foo
foo::bar#bar<tt>: instance method bar under <tt>foo::bar
foo::bar.bar<tt>: either singleton or instance method bar under <tt>foo::bar
<tt>foo::bar::Baz<tt>: module/class foo:bar::Baz
foo::bar::baz: singleton method baz from foo::bar
other: raise RiError
# File lib/fastri/name_descriptor.rb, line 26 def initialize(arg) @class_names = [] @method_name = nil @is_class_method = nil case arg when /((?:[^:]*::)*[^:]*)(#|::|\.)(.*)$/ ns, sep, meth_or_class = $~.captures # optimization attempt: try to guess the real capitalization, # so we get a direct hit @class_names = ns.split(/::/).map{|x| x[0,1] = x[0,1].upcase; x } if ]# .].include? sep @method_name = meth_or_class @is_class_method = case sep when "#"; false when "."; nil end else if ("A".."Z").include? meth_or_class[0,1] # 1.9 compatibility @class_names << meth_or_class else @method_name = meth_or_class @is_class_method = true end end when /^[^#:.]+/ if ("A".."Z").include? arg[0,1] @class_names = [arg] else @method_name = arg.dup @is_class_method = nil end else raise RiError, "Cannot create NameDescriptor from #{arg}" end end
Generated with the Darkfish Rdoc Generator 2.