Class: Wood::TreePattern::ReplacementBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/wood/tree_pattern/replacement_builder.rb

Direct Known Subclasses

PatternCallback

Instance Method Summary collapse

Constructor Details

#initialize(pattern_builder, &block) ⇒ ReplacementBuilder

Returns a new instance of ReplacementBuilder.



3
4
5
6
# File 'lib/wood/tree_pattern/replacement_builder.rb', line 3

def initialize(pattern_builder, &block)
  @pattern_builder = pattern_builder
  @block           = block
end

Instance Method Details

#replacement_for(node) ⇒ Object



8
9
10
11
12
13
14
# File 'lib/wood/tree_pattern/replacement_builder.rb', line 8

def replacement_for(node)
  @pattern_builder.vars.each do |v|
    singleton_class.__send__(:define_method, v.name) { v.value }
  end
  @node = node
  instance_eval(&@block)
end

#within(node, &block) ⇒ Object



16
17
18
19
# File 'lib/wood/tree_pattern/replacement_builder.rb', line 16

def within(node, &block)
  node.__rewriter_class__.instance_eval &block
  node.rewrite!
end