# File lib/kafo/condition.rb, line 5 def initialize(expression, context = []) @expression = expression @context = context end
# File lib/kafo/condition.rb, line 10 def evaluate !!eval(substitute(@expression)) end
# File lib/kafo/condition.rb, line 16 def substitute(expression) expression.gsub(VARIABLE_RE) do |variable| param = @context.detect { |p| p.name == $1.tr('$','') } raise ConditionError, "can't substitute #{$1}, unknown parameter with such name" if param.nil? variable.gsub!($1, param.condition_value) end end