Class: Benedictus::ExpressionEvaluator
- Inherits:
-
Object
- Object
- Benedictus::ExpressionEvaluator
- Defined in:
- lib/benedictus/expression_evaluator.rb
Constant Summary collapse
- EVAL_ERRORS =
[NameError, NoMethodError, SyntaxError, LoadError].freeze
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(expression) ⇒ ExpressionEvaluator
constructor
A new instance of ExpressionEvaluator.
Constructor Details
#initialize(expression) ⇒ ExpressionEvaluator
Returns a new instance of ExpressionEvaluator.
11 12 13 |
# File 'lib/benedictus/expression_evaluator.rb', line 11 def initialize(expression) @expression = expression end |
Class Method Details
.call(expression) ⇒ Object
7 8 9 |
# File 'lib/benedictus/expression_evaluator.rb', line 7 def self.call(expression) new(expression).call end |
Instance Method Details
#call ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/benedictus/expression_evaluator.rb', line 15 def call raise Benedictus::EvaluationError, "Expression is empty" if @expression.to_s.strip.empty? eval(@expression, TOPLEVEL_BINDING, "(benedictus)") rescue *EVAL_ERRORS => e raise Benedictus::EvaluationError, "Failed to evaluate expression `#{@expression}`: #{e.class}: #{e.}" end |