Class: RailsFlowMap::ModelAnalyzer::ModelVisitor

Inherits:
Parser::AST::Processor
  • Object
show all
Defined in:
lib/rails_flow_map/analyzers/model_analyzer.rb

Instance Method Summary collapse

Constructor Details

#initialize(graph, file_path) ⇒ ModelVisitor

Returns a new instance of ModelVisitor.



32
33
34
35
36
# File 'lib/rails_flow_map/analyzers/model_analyzer.rb', line 32

def initialize(graph, file_path)
  @graph = graph
  @file_path = file_path
  @current_class = nil
end

Instance Method Details

#on_class(node) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/rails_flow_map/analyzers/model_analyzer.rb', line 38

def on_class(node)
  class_name_node, superclass_node, body_node = *node
  class_name = extract_class_name(class_name_node)
  
  if class_name && is_active_record_model?(superclass_node)
    @current_class = class_name
    node_id = "model_#{class_name.downcase}"
    
    model_node = FlowNode.new(
      id: node_id,
      name: class_name,
      type: :model,
      file_path: @file_path,
      line_number: node.loc.line
    )
    
    @graph.add_node(model_node)
  end

  super
ensure
  @current_class = nil
end

#on_send(node) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/rails_flow_map/analyzers/model_analyzer.rb', line 62

def on_send(node)
  return unless @current_class

  receiver, method_name, *args = *node
  
  if receiver.nil? && association_method?(method_name)
    process_association(method_name, args)
  end

  super
end