aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rdoc/ri/ri_cache.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rdoc/ri/ri_cache.rb')
-rw-r--r--lib/rdoc/ri/ri_cache.rb31
1 files changed, 20 insertions, 11 deletions
diff --git a/lib/rdoc/ri/ri_cache.rb b/lib/rdoc/ri/ri_cache.rb
index 4ca976c4b9..da2a7e47ff 100644
--- a/lib/rdoc/ri/ri_cache.rb
+++ b/lib/rdoc/ri/ri_cache.rb
@@ -56,16 +56,16 @@ module RI
# return the list of local methods matching name
# We're split into two because we need distinct behavior
# when called from the toplevel
- def methods_matching(name)
- local_methods_matching(name)
+ 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
- def recursively_find_methods_matching(name)
- res = local_methods_matching(name)
+ 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))
+ res.concat(c.recursively_find_methods_matching(name, is_class_method))
end
res
end
@@ -80,10 +80,19 @@ module RI
private
- # Return a list of all our methods matching a given string
- def local_methods_matching(name)
- @class_methods.find_all {|m| m.name[name] } +
- @instance_methods.find_all {|m| m.name[name] }
+ # Return a list of all our methods matching a given string.
+ # Is +is_class_methods+ if 'nil', we don't care if the method
+ # is a class method or not, otherwise we only return
+ # those methods that match
+ def local_methods_matching(name, is_class_method)
+ list = case is_class_method
+ when nil then @class_methods + @instance
+ when true then @class_methods
+ when false then @instance_methods
+ else fail "Unknown is_class_method"
+ end
+
+ list.find_all {|m| m.name[name]}
end
end
@@ -91,8 +100,8 @@ module RI
# for methods searches all classes, not just itself
class TopLevelEntry < ClassEntry
- def methods_matching(name)
- res = recursively_find_methods_matching(name)
+ def methods_matching(name, is_class_method)
+ res = recursively_find_methods_matching(name, is_class_method)
end
def full_name