Class: EquationEngine

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of EquationEngine.



53
54
55
56
# File 'lib/equation.rb', line 53

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

Instance Attribute Details

#contextObject

Returns the value of attribute context.



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

def context
  @context
end

#parserObject

Returns the value of attribute parser.



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

def parser
  @parser
end

Instance Method Details

#eval(rule:) ⇒ Object



69
70
71
# File 'lib/equation.rb', line 69

def eval(rule:)
  rule.value(ctx: @context)
end

#eval_with(rule:, values: {}) ⇒ Object



73
74
75
76
77
# File 'lib/equation.rb', line 73

def eval_with(rule:, values: {})
  rule.value(ctx: @context.tap { |x|
    x.transient_symbols = values
  })
end

#parse(rule:) ⇒ Object



58
59
60
61
62
63
# File 'lib/equation.rb', line 58

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

  parsed_rule
end

#parse_and_eval(rule:) ⇒ Object



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

def parse_and_eval(rule:)
  parse(rule: rule).value(ctx: @context)
end