Sha256: b3b4b6b11df9877406b4e06b9f5f5eed07da57e17ca04369c8972468407491d1
Contents?: true
Size: 1.33 KB
Versions: 1
Compression:
Stored size: 1.33 KB
Contents
module Patterns class Ruleset class EmptyRuleset < StandardError; end class << self attr_accessor :rule_names end def self.rules (rule_names || []).map do |rule_name| rule_name.to_s.classify.constantize end end def self.add_rule(rule_name) self.rule_names ||= [] self.rule_names << rule_name.to_sym self end def initialize(subject = nil) raise EmptyRuleset if self.class.rules.empty? @rules = self.class.rules.map { |rule| rule.new(subject) } end def satisfied?(force: false) rules.all? do |rule| rule.satisfied? || rule.not_applicable? || (force && rule.forceable?) end end def not_satisfied? !satisfied? end def applicable? !not_applicable? end def not_applicable? rules.all?(&:not_applicable?) end def forceable? rules.all? do |rule| rule.forceable? || rule.not_applicable? || rule.satisfied? end end def each(&block) return enum_for(:each) unless block_given? rules.each do |rule_or_ruleset| if rule_or_ruleset.is_a?(Ruleset) rule_or_ruleset.each(&block) else yield rule_or_ruleset end end end private attr_reader :rules end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rails-patterns-0.10.0 | lib/patterns/ruleset.rb |