class ReplaceIndirectsWithReferencesAst

Attributes

count_replaced[RW]
replacement_made[RW]

Public Class Methods

new() click to toggle source
# File src/simplify/replace_indirects_with_references.rb, line 8
def initialize
  @count_replaced = 0
end

Public Instance Methods

function(ast) click to toggle source
# File src/simplify/replace_indirects_with_references.rb, line 25
def function(ast)
  return unless ast[1] == :INDIRECT
  args = ast[2..-1]
  if args[0][0] == :string
    @count_replaced += 1
    @replacement_made = true
    ast.replace(CachingFormulaParser.parse(args[0][1]))
  elsif args[0][0] == :error
    @count_replaced += 1
    @replacement_made = true
    ast.replace(args[0])
  end
end
map(ast) click to toggle source
# File src/simplify/replace_indirects_with_references.rb, line 18
def map(ast)
  return ast unless ast.is_a?(Array)
  function(ast) if ast[0] == :function
  ast.each { |a| map(a) }
  ast
end
replace(ast) click to toggle source
# File src/simplify/replace_indirects_with_references.rb, line 12
def replace(ast)
  @replacement_made = false
  map(ast)
  @replacement_made
end