Class: Bodyguards::RuleSet

Inherits:
Object
  • Object
show all
Defined in:
lib/bodyguards/rule_set.rb

Instance Method Summary collapse

Constructor Details

#initializeRuleSet

Returns a new instance of RuleSet.



3
4
5
6
# File 'lib/bodyguards/rule_set.rb', line 3

def initialize
  @global_rules = []
  @rules = {}
end

Instance Method Details

#add_global_rule(rule) ⇒ Object



12
13
14
# File 'lib/bodyguards/rule_set.rb', line 12

def add_global_rule(rule)
  @global_rules << rule
end

#add_rule_for(feature_name, rule) ⇒ Object



8
9
10
# File 'lib/bodyguards/rule_set.rb', line 8

def add_rule_for(feature_name, rule)
  rules[feature_name.to_sym] = rule
end

#evaluate(feature_name, subject) ⇒ Object



16
17
18
19
# File 'lib/bodyguards/rule_set.rb', line 16

def evaluate(feature_name, subject)
  return true if global_rules.any? { |rule| rule.evaluate(subject) }
  rules.fetch(feature_name.to_sym).evaluate(subject)
end

#evaluate_all(subject) ⇒ Object



21
22
23
24
# File 'lib/bodyguards/rule_set.rb', line 21

def evaluate_all(subject)
  return true if global_rules.any? { |rule| rule.evaluate(subject) }
  rules.values.any? { |rule| rule.evaluate(subject) }
end