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