Class: Featureflip::Evaluation::ConditionEvaluator

Inherits:
Object
  • Object
show all
Defined in:
lib/featureflip/evaluation/condition_evaluator.rb

Instance Method Summary collapse

Instance Method Details

#evaluate_condition(condition, context) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/featureflip/evaluation/condition_evaluator.rb', line 4

def evaluate_condition(condition, context)
  attr_value = context[condition.attribute]

  return condition.negate if attr_value.nil?

  str_value = attr_value.to_s.downcase
  targets = condition.values.map { |v| v.to_s.downcase }

  result = evaluate_operator(condition.operator, str_value, targets)
  condition.negate ? !result : result
end

#evaluate_condition_groups(condition_groups, context) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/featureflip/evaluation/condition_evaluator.rb', line 26

def evaluate_condition_groups(condition_groups, context)
  return true if condition_groups.nil? || condition_groups.empty?

  condition_groups.all? do |group|
    evaluate_conditions(group.conditions, group.operator, context)
  end
end

#evaluate_conditions(conditions, logic, context) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/featureflip/evaluation/condition_evaluator.rb', line 16

def evaluate_conditions(conditions, logic, context)
  return true if conditions.empty?

  if logic == "And"
    conditions.all? { |c| evaluate_condition(c, context) }
  else
    conditions.any? { |c| evaluate_condition(c, context) }
  end
end