lib/dentaku/calculator.rb in dentaku-2.0.3 vs lib/dentaku/calculator.rb in dentaku-2.0.4

- old
+ new

@@ -1,5 +1,6 @@ +require 'dentaku' require 'dentaku/bulk_expression_solver' require 'dentaku/exceptions' require 'dentaku/token' require 'dentaku/dependency_resolver' require 'dentaku/parser' @@ -29,23 +30,23 @@ rescue UnboundVariableError yield expression if block_given? end def evaluate!(expression, data={}) - memory[expression] || store(data) do + store(data) do node = expression node = ast(node) unless node.is_a?(AST::Node) node.value(memory) end end def solve!(expression_hash) - BulkExpressionSolver.new(expression_hash, memory).solve! + BulkExpressionSolver.new(expression_hash, self).solve! end def solve(expression_hash, &block) - BulkExpressionSolver.new(expression_hash, memory).solve(&block) + BulkExpressionSolver.new(expression_hash, self).solve(&block) end def dependencies(expression) ast(expression).dependencies(memory) end @@ -76,9 +77,13 @@ end self end alias_method :bind, :store + + def store_formula(key, formula) + store(key, ast(formula)) + end def clear @memory = {} end