Sha256: 4eb57ae061e162fc359527e5709c21d19ce3eaa9a55509e771addf372cbc36d6

Contents?: true

Size: 749 Bytes

Versions: 5

Compression:

Stored size: 749 Bytes

Contents

module Metamorpher
  module Builders
    module Ruby
      class VariableReplacementVisitor < Visitable::Visitor
        attr_accessor :variable_name, :replacement

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

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

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

        def visit_term(term)
          term
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
metamorpher-0.2.6 lib/metamorpher/builders/ruby/variable_replacement_visitor.rb
metamorpher-0.2.5 lib/metamorpher/builders/ruby/variable_replacement_visitor.rb
metamorpher-0.2.4 lib/metamorpher/builders/ruby/variable_replacement_visitor.rb
metamorpher-0.2.3 lib/metamorpher/builders/ruby/variable_replacement_visitor.rb
metamorpher-0.2.2 lib/metamorpher/builders/ruby/variable_replacement_visitor.rb