Method: FastRI::RiIndex#methods_under_matching

Defined in:
lib/fastri/ri_index.rb

#methods_under_matching(class_entry_or_name, regexp, recursive, scope = nil) ⇒ Object

Returns array of MethodEntry objects under class_entry_or_name (either String or ClassEntry) in the hierarchy whose full_name matches the given regexp.



453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
# File 'lib/fastri/ri_index.rb', line 453

def methods_under_matching(class_entry_or_name, regexp, recursive, scope = nil)
  case class_entry_or_name
  when ClassEntry
    full_name = class_entry_or_name.full_name
  else
    full_name = class_entry_or_name
  end
  method_entry = get_entry(@method_array, full_name, MethodEntry)
  return [] unless method_entry
  ret = []
  re1, re2 = matching_regexps_method(full_name)
  (method_entry.index...@method_array.size).each do |i|
    entry = @method_array[i]
    break unless re1 =~ entry
    next if !recursive && re2 !~ entry 
    full_name = entry[/\S+/]
    next unless regexp =~ full_name
    if scope
      sources = method_sources(i)
      if sources.include?(sindex = scope_to_sindex(scope))
        ret << MethodEntry.new(self, full_name, i, sindex)
      end
    else
      ret << MethodEntry.new(self, full_name, i, nil)
    end
  end
  ret
end