Class: Swarm::ExpressionEvaluator
- Inherits:
-
Object
- Object
- Swarm::ExpressionEvaluator
show all
- Extended by:
- Forwardable
- Defined in:
- lib/swarm/evaluation/expression_evaluator.rb
Defined Under Namespace
Classes: InvalidExpressionError, UndefinedExpressionVariableError
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of ExpressionEvaluator.
16
17
18
|
# File 'lib/swarm/evaluation/expression_evaluator.rb', line 16
def initialize(expression)
@expression = expression
end
|
Instance Attribute Details
#expression ⇒ Object
Returns the value of attribute expression.
12
13
14
|
# File 'lib/swarm/evaluation/expression_evaluator.rb', line 12
def expression
@expression
end
|
Instance Method Details
#all_conditions_met? ⇒ Boolean
28
29
30
31
32
|
# File 'lib/swarm/evaluation/expression_evaluator.rb', line 28
def all_conditions_met?
conditions.all? { |type, condition|
check_condition(type, condition)
}
end
|
#check_condition(type, condition) ⇒ Object
34
35
36
37
38
39
40
41
|
# File 'lib/swarm/evaluation/expression_evaluator.rb', line 34
def check_condition(type, condition)
unless %w[if unless].include?(type)
raise ArgumentError, "Not a conditional"
end
result = evaluate_condition(condition)
type == "if" ? result : !result
end
|
#conditions ⇒ Object
43
44
45
|
# File 'lib/swarm/evaluation/expression_evaluator.rb', line 43
def conditions
arguments.slice("if", "unless")
end
|
#evaluate_condition(string) ⇒ Object
20
21
22
23
24
25
26
|
# File 'lib/swarm/evaluation/expression_evaluator.rb', line 20
def evaluate_condition(string)
Dentaku.evaluate!(string, workitem)
rescue Dentaku::UnboundVariableError => e
raise UndefinedExpressionVariableError, e
rescue Dentaku::Error => e
raise InvalidExpressionError, e
end
|