Class: RSpock::AST::InteractionToBlockIdentityAssertionTransformation
- Inherits:
-
ASTTransform::AbstractTransformation
- Object
- ASTTransform::AbstractTransformation
- RSpock::AST::InteractionToBlockIdentityAssertionTransformation
- Defined in:
- lib/rspock/ast/interaction_to_block_identity_assertion_transformation.rb
Overview
Transforms an :rspock_interaction node into an assert_same assertion when a block_pass (&var) is present.
Returns the node unchanged (passthrough) when no block_pass is present.
Instance Method Summary collapse
-
#initialize(index = 0) ⇒ InteractionToBlockIdentityAssertionTransformation
constructor
A new instance of InteractionToBlockIdentityAssertionTransformation.
- #run(interaction) ⇒ Object
Constructor Details
#initialize(index = 0) ⇒ InteractionToBlockIdentityAssertionTransformation
Returns a new instance of InteractionToBlockIdentityAssertionTransformation.
12 13 14 |
# File 'lib/rspock/ast/interaction_to_block_identity_assertion_transformation.rb', line 12 def initialize(index = 0) @index = index end |
Instance Method Details
#run(interaction) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/rspock/ast/interaction_to_block_identity_assertion_transformation.rb', line 16 def run(interaction) return interaction unless interaction.type == :rspock_interaction return interaction unless interaction.block_pass capture_var = :"__rspock_blk_#{@index}" block_var = interaction.block_pass.children[0] s(:send, nil, :assert_same, block_var, s(:send, s(:lvar, capture_var), :call) ) end |