class Modloc::Locator

Locator for a given module or class

Public Class Methods

new(mod) click to toggle source

Create a new locator for a module or class @param mod [Module, Class]

# File lib/modloc/locator.rb, line 6
def initialize(mod)
  @mod = mod
end

Public Instance Methods

find() click to toggle source

Finds all the locations of a given module or class @return [Array]

# File lib/modloc/locator.rb, line 12
def find
  valid_sources.reduce([]) do |locations, source|
    locations + source.locate_all(source_regex)
  end
end

Private Instance Methods

files() click to toggle source
# File lib/modloc/locator.rb, line 28
def files
  $LOADED_FEATURES.map { |f| Source.new(f) }
end
ruby_files() click to toggle source
# File lib/modloc/locator.rb, line 24
def ruby_files
  files.select { |file| file.ext == '.rb' }
end
source_regex() click to toggle source
# File lib/modloc/locator.rb, line 32
def source_regex
  rxp = @mod.name.split('::').each_with_index.map do |name, index|
    group = 'module |class '
    group << '|::' unless index == 0
    "(#{group})#{name}"
  end.join('(\s*#.*\n)*\s*')
  /#{rxp}/
end
valid_sources() click to toggle source
# File lib/modloc/locator.rb, line 20
def valid_sources
  ruby_files.select { |file| file.strip =~ source_regex }
end