Module: Gravedigger::DefinitionFinder

Defined in:
lib/gravedigger/definition_finder.rb

Class Method Summary collapse

Class Method Details

.find_method_definitions(line) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/gravedigger/definition_finder.rb', line 30

def self.find_method_definitions(line)
  find_method_regex_result = line[/[ ]+def [a-zA-Z0-9?_.\!]*/]
  if find_method_regex_result
    method_name = find_method_regex_result.strip.slice(4..-1)
    method_name = method_name.slice(0,4) if method_name && method_name[0..4] == 'self.'
  end
  method_name
end

.find_variable_definitions(line) ⇒ Object



39
40
41
42
43
44
# File 'lib/gravedigger/definition_finder.rb', line 39

def self.find_variable_definitions(line)
  result = line.scan(/^[ ]+([A-Za-z0-9_\!\@]*)[ ]*\=[^\=\>]/)
  return nil if result.empty?
  result[0][0].sub!(/^@/, '')
  result[0][0]
end

.get_definitions(files_to_search) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/gravedigger/definition_finder.rb', line 5

def self.get_definitions(files_to_search)
  method_definitions = {}
  variable_definitions = {}
  errors = []

  files_to_search.each do |fileName|
    begin
      File.readlines(fileName).each_with_index do |line,index|
        next unless line
        method_name = find_method_definitions(line)
        variable_name = find_variable_definitions(line)

        location = "[#{fileName}:#{index+1}]"

        method_definitions[method_name] = location if method_name
        variable_definitions[variable_name] = location if variable_name
      end
    rescue StandardError => error
      errors << "Error while reading file: #{fileName} \n #{error.message}"
    end
  end

  return method_definitions, variable_definitions, errors
end