Class: OllamaAgent::State::ASTSummarizer::SummaryVisitor

Inherits:
Prism::Visitor
  • Object
show all
Defined in:
lib/ollama_agent/state/ast_summarizer.rb

Overview

Walks a single compilation unit and builds the summary payload.

Instance Method Summary collapse

Constructor Details

#initialize(source, touched) ⇒ SummaryVisitor

Returns a new instance of SummaryVisitor.



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/ollama_agent/state/ast_summarizer.rb', line 50

def initialize(source, touched)
  super()
  @source = source
  @touched = touched
  @requires = []
  @constants = []
  @scope_methods = Hash.new { |h, k| h[k] = [] }
  @touched_bodies = {}
  @class_stack = ["(main)"]
  @scope_methods["(main)"] = []
end

Instance Method Details

#to_summaryObject



89
90
91
92
93
94
95
96
# File 'lib/ollama_agent/state/ast_summarizer.rb', line 89

def to_summary
  {
    classes: classes_payload,
    constants: @constants.uniq.sort,
    requires: @requires.compact.uniq.sort,
    touched_method_bodies: @touched_bodies
  }
end

#visit_call_node(node) ⇒ Object



79
80
81
82
# File 'lib/ollama_agent/state/ast_summarizer.rb', line 79

def visit_call_node(node)
  capture_require(node)
  super
end

#visit_class_node(node) ⇒ Object



68
69
70
71
72
# File 'lib/ollama_agent/state/ast_summarizer.rb', line 68

def visit_class_node(node)
  push_scope(class_name(node))
  super
  pop_scope
end

#visit_constant_write_node(node) ⇒ Object



84
85
86
87
# File 'lib/ollama_agent/state/ast_summarizer.rb', line 84

def visit_constant_write_node(node)
  @constants << node.name.to_s
  super
end

#visit_def_node(node) ⇒ Object



74
75
76
77
# File 'lib/ollama_agent/state/ast_summarizer.rb', line 74

def visit_def_node(node)
  record_method(node)
  super
end

#visit_module_node(node) ⇒ Object



62
63
64
65
66
# File 'lib/ollama_agent/state/ast_summarizer.rb', line 62

def visit_module_node(node)
  push_scope(module_name(node))
  super
  pop_scope
end