Class: Featureflip::Evaluation::ConditionEvaluator
- Inherits:
-
Object
- Object
- Featureflip::Evaluation::ConditionEvaluator
- Defined in:
- lib/featureflip/evaluation/condition_evaluator.rb
Instance Method Summary collapse
- #evaluate_condition(condition, context) ⇒ Object
- #evaluate_condition_groups(condition_groups, context) ⇒ Object
- #evaluate_conditions(conditions, logic, context) ⇒ Object
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 |