Module: OllamaAgent::Topology::Extractors::RubySemanticExtractor::IrNodesEmitter
- Defined in:
- lib/ollama_agent/topology/extractors/ruby_semantic_extractor/ir_nodes_emitter.rb
Overview
Emits frozen IR nodes while visiting; relies on extractor ivars (+@nodes+, @file_path).
Instance Method Summary collapse
- #emit_class(ctx) ⇒ Object
- #emit_concern(ctx) ⇒ Object
- #emit_module(ctx) ⇒ Object
- #emit_worker_if_needed(ctx) ⇒ Object
Instance Method Details
#emit_class(ctx) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/ollama_agent/topology/extractors/ruby_semantic_extractor/ir_nodes_emitter.rb', line 29 def emit_class(ctx) @nodes << IR::ClassNode.build(source_path: @file_path, source_line: ctx[:line], origin_extractor_version: EXTRACTOR_VERSION, fqcn: ctx[:fqcn], superclass_fqcn: ctx[:superclass_fqcn], module_chain: ctx[:module_chain], methods: ctx[:methods], includes: ctx[:includes].uniq, extends: ctx[:extends].uniq) end |
#emit_concern(ctx) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/ollama_agent/topology/extractors/ruby_semantic_extractor/ir_nodes_emitter.rb', line 17 def emit_concern(ctx) @nodes << IR::ConcernNode.build( source_path: @file_path, source_line: ctx[:line], origin_extractor_version: EXTRACTOR_VERSION, fqcn: ctx[:fqcn], included_modules: [], class_methods: ctx[:class_method_names].uniq.sort, instance_methods: ctx[:instance_method_names].uniq.sort ) end |
#emit_module(ctx) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/ollama_agent/topology/extractors/ruby_semantic_extractor/ir_nodes_emitter.rb', line 37 def emit_module(ctx) @nodes << IR::ModuleNode.build( source_path: @file_path, source_line: ctx[:line], origin_extractor_version: EXTRACTOR_VERSION, fqcn: ctx[:fqcn], module_chain: ctx[:module_chain], methods: ctx[:methods] ) end |
#emit_worker_if_needed(ctx) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ollama_agent/topology/extractors/ruby_semantic_extractor/ir_nodes_emitter.rb', line 48 def emit_worker_if_needed(ctx) return unless ctx[:sidekiq_worker] perform = ctx[:methods].find { |m| m[:name].to_s == "perform" } return unless perform sig = SignatureNormalizer.normalize(perform) @nodes << IR::WorkerNode.build(source_path: @file_path, source_line: ctx[:line], origin_extractor_version: EXTRACTOR_VERSION, fqcn: ctx[:fqcn], queue: "default", perform_signature: sig) end |