Class: EquationEngine

Inherits:
Object
  • Object
show all
Defined in:
lib/equation.rb

Instance Method Summary collapse

Constructor Details

#initialize(default: {}, methods: {}) ⇒ EquationEngine

Returns a new instance of EquationEngine.



50
51
52
53
# File 'lib/equation.rb', line 50

def initialize(default: {}, methods: {})
  @parser = EquationParser.new
  @context = Context.new(default: default, methods: methods)
end

Instance Method Details

#eval(rule:) ⇒ Object



62
63
64
65
66
67
# File 'lib/equation.rb', line 62

def eval(rule:)
  parsed_rule = @parser.parse(rule)
  raise "Parse Error: #{rule}" unless parsed_rule

  parsed_rule.value(ctx: @context)
end

#parse(rule:) ⇒ Object



55
56
57
58
59
60
# File 'lib/equation.rb', line 55

def parse(rule:)
  parsed_rule = @parser.parse(rule)
  raise "Parse Error: #{@parser.failure_reason}" unless parsed_rule

  parsed_rule
end