lib/dentaku/calculator.rb in dentaku-1.2.4 vs lib/dentaku/calculator.rb in dentaku-1.2.5

- old
+ new

@@ -1,27 +1,28 @@ require 'dentaku/evaluator' require 'dentaku/exceptions' require 'dentaku/expression' -require 'dentaku/rules' +require 'dentaku/rule_set' require 'dentaku/token' require 'dentaku/dependency_resolver' module Dentaku class Calculator - attr_reader :result + attr_reader :result, :rule_set def initialize clear + @rule_set = RuleSet.new end def add_function(fn) - Rules.add_function(fn) + rule_set.add_function(fn) self end def add_functions(fns) - fns.each { |fn| Rules.add_function(fn) } + fns.each { |fn| add_function(fn) } self end def evaluate(expression, data={}) evaluate!(expression, data) @@ -31,10 +32,10 @@ def evaluate!(expression, data={}) store(data) do expr = Expression.new(expression, @memory) raise UnboundVariableError.new(expr.identifiers) if expr.unbound? - @evaluator ||= Evaluator.new + @evaluator ||= Evaluator.new(rule_set) @result = @evaluator.evaluate(expr.tokens) end end def solve!(expression_hash)