def initialize(arg)
@class_names = []
@method_name = nil
@is_class_method = nil
case arg
when /((?:[^:]*::)*[^:]*)(#|::|\.)(.*)$/
ns, sep, meth_or_class = $~.captures
@class_names = ns.split(/::/).map{|x| x[0,1] = x[0,1].upcase; x }
if %w[# .].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]
@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