class Functio::Expression
Represents a mathematical expression.
Attributes
calculator[R]
The calculator instance used for expression evaluation.
expression[R]
String representation of Expression
instance.
Public Class Methods
new(expression)
click to toggle source
Constructs an Expression
instance passing in an expression
String. Raises InvalidExpressionError
if expression
is invalid. Raises DivisionByZeroError
if expression
contains a division by zero.
# File lib/functio/expression.rb, line 35 def initialize(expression) raise RuntimeError if expression.strip.empty? @calculator = Dentaku::Calculator.new calculator.evaluate(expression) @expression = expression rescue Dentaku::ParseError, RuntimeError raise InvalidExpressionError, 'invalid expression' rescue Dentaku::ZeroDivisionError raise DivisionByZeroError end
Public Instance Methods
evaluate(variables = {})
click to toggle source
Evaluates the expression passing in its variables
in a Hash which keys are the variables names and values the variables values. Raises DivisionByZeroError
if a division by zero occurs. Returns nil
if no value is provided in variables
for some of the expression variables.
# File lib/functio/expression.rb, line 50 def evaluate(variables = {}) calculator.evaluate(expression, variables) rescue Dentaku::ZeroDivisionError raise DivisionByZeroError end
variables()
click to toggle source
Returns the variables of the expression in an Array of Strings.
# File lib/functio/expression.rb, line 57 def variables calculator.dependencies(expression) end