class Keisan::Calculator
Attributes
context[R]
Public Class Methods
new(context: nil, allow_recursive: false, allow_blocks: true, allow_multiline: true, allow_random: true, cache: nil)
click to toggle source
Note, allow_recursive
would be more appropriately named: allow_unbound_functions_in_function_definitions, but it is too late for that.
# File lib/keisan/calculator.rb, line 7 def initialize(context: nil, allow_recursive: false, allow_blocks: true, allow_multiline: true, allow_random: true, cache: nil) @context = context || Context.new( allow_recursive: allow_recursive, allow_blocks: allow_blocks, allow_multiline: allow_multiline, allow_random: allow_random ) @cache = case cache when nil, false nil when true AST::Cache.new when AST::Cache cache else raise Exceptions::StandardError.new("cache must be either nil, false, true, or an instance of Keisan::AST::Cache") end end
Public Instance Methods
allow_blocks()
click to toggle source
# File lib/keisan/calculator.rb, line 34 def allow_blocks context.allow_blocks end
allow_multiline()
click to toggle source
# File lib/keisan/calculator.rb, line 38 def allow_multiline context.allow_multiline end
allow_random()
click to toggle source
# File lib/keisan/calculator.rb, line 42 def allow_random context.allow_random end
allow_recursive()
click to toggle source
# File lib/keisan/calculator.rb, line 26 def allow_recursive context.allow_recursive end
allow_recursive!()
click to toggle source
# File lib/keisan/calculator.rb, line 30 def allow_recursive! context.allow_recursive! end
ast(expression)
click to toggle source
# File lib/keisan/calculator.rb, line 54 def ast(expression) Evaluator.new(self, cache: @cache).parse_ast(expression) end
define_function!(name, function)
click to toggle source
# File lib/keisan/calculator.rb, line 62 def define_function!(name, function) context.register_function!(name, function) end
define_variable!(name, value)
click to toggle source
# File lib/keisan/calculator.rb, line 58 def define_variable!(name, value) context.register_variable!(name, value) end
evaluate(expression, definitions = {})
click to toggle source
# File lib/keisan/calculator.rb, line 46 def evaluate(expression, definitions = {}) Evaluator.new(self, cache: @cache).evaluate(expression, definitions) end
simplify(expression, definitions = {})
click to toggle source
# File lib/keisan/calculator.rb, line 50 def simplify(expression, definitions = {}) Evaluator.new(self, cache: @cache).simplify(expression, definitions) end