We found this class in more than one place, so add in the name from there.
# File rdoc/ri/cache.rb, line 19 def add_path(path) @path_names << path end
Return a list of all out method names
# File rdoc/ri/cache.rb, line 102 def all_method_names res = @class_methods.map {|m| m.full_name } @instance_methods.each {|m| res << m.full_name} res end
# File rdoc/ri/cache.rb, line 67 def classes_and_modules @inferior_classes end
Return an exact match to a particular name
# File rdoc/ri/cache.rb, line 72 def contained_class_named(name) @inferior_classes.find {|c| c.name == name} end
Return a list of any classes or modules that we contain that match a given string
# File rdoc/ri/cache.rb, line 63 def contained_modules_matching(name) @inferior_classes.find_all {|c| c.name[name]} end
Return our full name
# File rdoc/ri/cache.rb, line 95 def full_name res = @in_class.full_name res << "::" unless res.empty? res << @name end
read in our methods and any classes and modules in our namespace. Methods are stored in files called name-c|i.yaml, where the 'name' portion is the external form of the method name and the c|i is a class|instance flag
# File rdoc/ri/cache.rb, line 30 def load_from(dir) Dir.foreach(dir) do |name| next if name =~ /^\./ # convert from external to internal form, and # extract the instance/class flag if name =~ /^(.*?)-(c|i).yaml$/ external_name = $1 is_class_method = $2 == "c" internal_name = RDoc::RI::Writer.external_to_internal(external_name) list = is_class_method ? @class_methods : @instance_methods path = File.join(dir, name) list << RDoc::RI::MethodEntry.new(path, internal_name, is_class_method, self) else full_name = File.join(dir, name) if File.directory?(full_name) inf_class = @inferior_classes.find {|c| c.name == name } if inf_class inf_class.add_path(full_name) else inf_class = RDoc::RI::ClassEntry.new(full_name, name, self) @inferior_classes << inf_class end inf_class.load_from(full_name) end end end end
return the list of local methods matching name We're split into two because we need distinct behavior when called from the toplevel
# File rdoc/ri/cache.rb, line 79 def methods_matching(name, is_class_method) local_methods_matching(name, is_class_method) end
Find methods matching 'name' in ourselves and in any classes we contain
# File rdoc/ri/cache.rb, line 85 def recursively_find_methods_matching(name, is_class_method) res = local_methods_matching(name, is_class_method) @inferior_classes.each do |c| res.concat(c.recursively_find_methods_matching(name, is_class_method)) end res end