Class: ClassIndexer::Processor

Inherits:
AST::Processor
  • Object
show all
Defined in:
lib/class_indexer.rb

Instance Method Summary collapse

Constructor Details

#initializeProcessor

Returns a new instance of Processor.



8
9
10
11
# File 'lib/class_indexer.rb', line 8

def initialize
  reset_class
  @class_list = {}
end

Instance Method Details

#add_method(method_name, line_num) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/class_indexer.rb', line 21

def add_method(method_name, line_num)
  unless @class_list.has_key? @current_class
    @class_list[@current_class] = []
  end

  @class_list[@current_class] << { name: method_name.to_s, line: line_num }
end

#get_listObject



17
18
19
# File 'lib/class_indexer.rb', line 17

def get_list
  @class_list
end

#handler_missing(node) ⇒ Object



66
67
68
# File 'lib/class_indexer.rb', line 66

def handler_missing(node)
  #puts "missing #{node.type}"
end

#on_begin(node) ⇒ Object



62
63
64
# File 'lib/class_indexer.rb', line 62

def on_begin(node)
  node.children.each { |c| process(c) }
end

#on_class(node) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/class_indexer.rb', line 29

def on_class(node)
  line_num   = node.children[0].loc.line
  class_name = node.children[0].children[1]

  @current_class = class_name.to_s
  node.children.each { |c| process(c) }
  reset_class
end

#on_const(node) ⇒ Object

Constant definition



55
56
# File 'lib/class_indexer.rb', line 55

def on_const(node)
end

#on_def(node) ⇒ Object

Instance methods



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

def on_def(node)
  line_num    = node.loc.line
  method_name = node.children[0]

  add_method(method_name, line_num)
end

#on_defs(node) ⇒ Object

Class methods



47
48
49
50
51
52
# File 'lib/class_indexer.rb', line 47

def on_defs(node)
  line_num    = node.loc.line
  method_name = "self.#{node.children[1]}"

  add_method(method_name, line_num)
end

#on_send(node) ⇒ Object

Method call



59
60
# File 'lib/class_indexer.rb', line 59

def on_send(node)
end

#reset_classObject



13
14
15
# File 'lib/class_indexer.rb', line 13

def reset_class
  @current_class = "main"
end