Class: Metamorpher::Builders::Ruby::VariableReplacementVisitor

Inherits:
Visitable::Visitor show all
Defined in:
lib/metamorpher/builders/ruby/variable_replacement_visitor.rb

Direct Known Subclasses

DerivingVisitor, EnsuringVisitor

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Visitable::Visitor

#visit

Constructor Details

#initialize(variable_name, replacement) ⇒ VariableReplacementVisitor

Returns a new instance of VariableReplacementVisitor.



7
8
9
10
# File 'lib/metamorpher/builders/ruby/variable_replacement_visitor.rb', line 7

def initialize(variable_name, replacement)
  @variable_name = variable_name
  @replacement = replacement
end

Instance Attribute Details

#replacementObject

Returns the value of attribute replacement.



5
6
7
# File 'lib/metamorpher/builders/ruby/variable_replacement_visitor.rb', line 5

def replacement
  @replacement
end

#variable_nameObject

Returns the value of attribute variable_name.



5
6
7
# File 'lib/metamorpher/builders/ruby/variable_replacement_visitor.rb', line 5

def variable_name
  @variable_name
end

Instance Method Details

#visit_literal(literal) ⇒ Object



12
13
14
15
16
17
# File 'lib/metamorpher/builders/ruby/variable_replacement_visitor.rb', line 12

def visit_literal(literal)
  Terms::Literal.new(
    name: literal.name,
    children: literal.children.map { |child| visit(child) }
  )
end

#visit_term(term) ⇒ Object



27
28
29
# File 'lib/metamorpher/builders/ruby/variable_replacement_visitor.rb', line 27

def visit_term(term)
  term
end

#visit_variable(variable) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/metamorpher/builders/ruby/variable_replacement_visitor.rb', line 19

def visit_variable(variable)
  if variable.name == variable_name
    replacement
  else
    variable
  end
end