Class: LiveCable::Rendering::MethodCollector
- Inherits:
-
Prism::Visitor
- Object
- Prism::Visitor
- LiveCable::Rendering::MethodCollector
- Defined in:
- lib/live_cable/rendering/method_collector.rb
Overview
Visitor that collects all method definitions and their dependencies
Instance Attribute Summary collapse
- #dependencies ⇒ Hash readonly
Instance Method Summary collapse
-
#initialize(component_class) ⇒ MethodCollector
constructor
A new instance of MethodCollector.
-
#visit_def_node(node) ⇒ void
Visit each method definition.
Constructor Details
#initialize(component_class) ⇒ MethodCollector
Returns a new instance of MethodCollector.
13 14 15 16 17 18 19 |
# File 'lib/live_cable/rendering/method_collector.rb', line 13 def initialize(component_class) super() @component_class = component_class @dependencies = {} @reactive_vars = component_class.all_reactive_variables end |
Instance Attribute Details
#dependencies ⇒ Hash (readonly)
10 11 12 |
# File 'lib/live_cable/rendering/method_collector.rb', line 10 def dependencies @dependencies end |
Instance Method Details
#visit_def_node(node) ⇒ void
This method returns an undefined value.
Visit each method definition
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/live_cable/rendering/method_collector.rb', line 24 def visit_def_node(node) method_name = node.name # Skip private/internal methods return super if %i[render render_in].include?(method_name) # Analyze this method's dependencies visitor = MethodDependencyVisitor.new(component_class, reactive_vars) visitor.visit(node) @dependencies[method_name] = { methods: visitor.method_calls, reactive_vars: visitor.reactive_var_reads, } super end |