A method name qualified by a optionally fully qualified class or module
name
We’re fairly casual about delimiters: folks can say Kernel::puts,
Kernel.puts, or Kernel#puts for example.
There’s one exception: if you say IO::read, we look for a class method,
but if you say IO.read, we look for an instance method
# File lib/rdoc/ri/util.rb, line 31
def initialize(arg)
@class_names = []
separator = nil
tokens = arg.split(/(\.|::|#)/)
# Skip leading '::', '#' or '.', but remember it might
# be a method name qualifier
separator = tokens.shift if tokens[0] =~ /^(\.|::|#)/
# Skip leading '::', but remember we potentially have an inst
# leading stuff must be class names
while tokens[0] =~ /^[A-Z]/
@class_names << tokens.shift
unless tokens.empty?
separator = tokens.shift
break unless separator == "::"
end
end
# Now must have a single token, the method name, or an empty array
unless tokens.empty?
@method_name = tokens.shift
# We may now have a trailing !, ?, or = to roll into
# the method name
if !tokens.empty? && tokens[0] =~ /^[!?=]$/
@method_name << tokens.shift
end
if @method_name =~ /::|\.|#/ or !tokens.empty?
raise RDoc::RI::Error.new("Bad argument: #{arg}")
end
if separator && separator != '.'
@is_class_method = separator == "::"
end
end
end