Class: ActiverecordCallbackLens::Collector::CallbackDefinition::ProcNodeLocator

Inherits:
Prism::Visitor
  • Object
show all
Defined in:
lib/activerecord_callback_lens/collector/callback_definition.rb

Overview

A Prism visitor that captures the innermost LambdaNode or BlockNode whose source range encloses a target line — the whole node (so its location.slice yields the full "-> { ... }" / "{ ... }" text), unlike ConditionParser::LambdaLocator which captures only the node body.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(target_line:) ⇒ ProcNodeLocator

Returns a new instance of ProcNodeLocator.

Parameters:

  • target_line (Integer)

    the line the proc's source_location reports



92
93
94
95
96
# File 'lib/activerecord_callback_lens/collector/callback_definition.rb', line 92

def initialize(target_line:)
  @target_line = target_line
  @node = nil
  super()
end

Instance Attribute Details

#nodePrism::Node? (readonly)

Returns the innermost matching lambda/block node.

Returns:

  • (Prism::Node, nil)

    the innermost matching lambda/block node



89
90
91
# File 'lib/activerecord_callback_lens/collector/callback_definition.rb', line 89

def node
  @node
end

Instance Method Details

#visit_block_node(block_node) ⇒ void

This method returns an undefined value.

Parameters:

  • block_node (Prism::BlockNode)


107
108
109
110
# File 'lib/activerecord_callback_lens/collector/callback_definition.rb', line 107

def visit_block_node(block_node)
  capture(block_node)
  super
end

#visit_lambda_node(lambda_node) ⇒ void

This method returns an undefined value.

Parameters:

  • lambda_node (Prism::LambdaNode)


100
101
102
103
# File 'lib/activerecord_callback_lens/collector/callback_definition.rb', line 100

def visit_lambda_node(lambda_node)
  capture(lambda_node)
  super
end