Class: Keisan::Calculator

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context: nil, allow_recursive: false) ⇒ Calculator

Returns a new instance of Calculator.



5
6
7
# File 'lib/keisan/calculator.rb', line 5

def initialize(context: nil, allow_recursive: false)
  @context = context || Context.new(allow_recursive: allow_recursive)
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



3
4
5
# File 'lib/keisan/calculator.rb', line 3

def context
  @context
end

Instance Method Details

#allow_recursiveObject



9
10
11
# File 'lib/keisan/calculator.rb', line 9

def allow_recursive
  context.allow_recursive
end

#allow_recursive!Object



13
14
15
# File 'lib/keisan/calculator.rb', line 13

def allow_recursive!
  context.allow_recursive!
end

#ast(expression) ⇒ Object



25
26
27
# File 'lib/keisan/calculator.rb', line 25

def ast(expression)
  Evaluator.new(self).ast(expression)
end

#define_function!(name, function) ⇒ Object



33
34
35
# File 'lib/keisan/calculator.rb', line 33

def define_function!(name, function)
  context.register_function!(name, function)
end

#define_variable!(name, value) ⇒ Object



29
30
31
# File 'lib/keisan/calculator.rb', line 29

def define_variable!(name, value)
  context.register_variable!(name, value)
end

#evaluate(expression, definitions = {}) ⇒ Object



17
18
19
# File 'lib/keisan/calculator.rb', line 17

def evaluate(expression, definitions = {})
  Evaluator.new(self).evaluate(expression, definitions)
end

#simplify(expression, definitions = {}) ⇒ Object



21
22
23
# File 'lib/keisan/calculator.rb', line 21

def simplify(expression, definitions = {})
  Evaluator.new(self).simplify(expression, definitions)
end