class Kafo::Condition

Constants

VARIABLE_RE

Public Class Methods

new(expression, context = []) click to toggle source
# File lib/kafo/condition.rb, line 6
def initialize(expression, context = [])
  @expression = expression
  @context = context
end

Public Instance Methods

evaluate() click to toggle source
# File lib/kafo/condition.rb, line 11
def evaluate
  !!eval(substitute(@expression))
end

Private Instance Methods

substitute(expression) click to toggle source
# File lib/kafo/condition.rb, line 17
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