class DeclarativePolicy::Rule::Or
Logical `or`. Mirrors And
.
Attributes
rules[R]
Public Class Methods
new(rules)
click to toggle source
# File lib/declarative_policy/rule.rb, line 235 def initialize(rules) @rules = rules end
Public Instance Methods
cached_pass?(context)
click to toggle source
# File lib/declarative_policy/rule.rb, line 258 def cached_pass?(context) @rules.each do |rule| pass = rule.cached_pass?(context) return pass if pass.nil? || pass == true end false end
pass?(context)
click to toggle source
# File lib/declarative_policy/rule.rb, line 239 def pass?(context) cached = cached_pass?(context) return cached unless cached.nil? @rules.any? { |r| r.pass?(context) } end
repr()
click to toggle source
# File lib/declarative_policy/rule.rb, line 274 def repr "any?(#{@rules.map(&:repr).join(', ')})" end
score(context)
click to toggle source
# File lib/declarative_policy/rule.rb, line 268 def score(context) return 0 unless cached_pass?(context).nil? @rules.sum { |r| r.score(context) } end
simplify()
click to toggle source
# File lib/declarative_policy/rule.rb, line 246 def simplify simplified_rules = @rules.flat_map do |rule| simplified = rule.simplify case simplified when Or then simplified.rules else [simplified] end end Or.new(simplified_rules) end