Class: Eqn::Calculator
- Inherits:
-
Object
show all
- Defined in:
- lib/eqn/calculator.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(eqn, vars = {}) ⇒ Calculator
Returns a new instance of Calculator.
3
4
5
6
|
# File 'lib/eqn/calculator.rb', line 3
def initialize(eqn, vars = {})
@eqn = eqn
@vars = vars
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method) ⇒ Object
16
17
18
19
|
# File 'lib/eqn/calculator.rb', line 16
def method_missing(method)
super unless i(calculate calc valid?).include?(method)
self.class.send(method, @eqn, @vars)
end
|
Class Method Details
.calculate(data, vars = {}) ⇒ Object
Also known as:
calc
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/eqn/calculator.rb', line 22
def calculate(data, vars = {})
@@vars = vars
begin
result = Parser.parse(data).value
raise ZeroDivisionError if result.is_a?(Float) && (result.abs == Float::INFINITY || result.nan?)
result
ensure
@@vars = nil
end
end
|
.valid?(data, vars = {}) ⇒ Boolean
34
35
36
37
38
39
|
# File 'lib/eqn/calculator.rb', line 34
def valid?(data, vars = {})
calc(data, vars)
true
rescue EqnError
false
end
|
Instance Method Details
#set(key_or_hash, value = nil) ⇒ Object
8
9
10
11
12
13
14
|
# File 'lib/eqn/calculator.rb', line 8
def set(key_or_hash, value = nil)
if key_or_hash.is_a?(Hash)
@vars.merge!(key_or_hash)
else
@vars[key_or_hash.intern] = value
end
end
|