class RulesProcessor::Processor
Attributes
options[RW]
records[RW]
ruleset[RW]
Public Class Methods
new(args = {})
click to toggle source
# File lib/rules_processor/processor.rb, line 6 def initialize(args = {}) @records = args[:records] @ruleset = args[:ruleset] @options = args[:options] end
Public Instance Methods
process()
click to toggle source
# File lib/rules_processor/processor.rb, line 12 def process ruleset.each do |rule| mark_skipped(rule) && next if already_matched?(rule) mark_not_match(rule) && next unless rule_matches?(rule) mark_match(rule) && actions_processor(rule) process break end matching_result end
Private Instance Methods
actions_processor(rule)
click to toggle source
# File lib/rules_processor/processor.rb, line 56 def actions_processor(rule) klass = RulesProcessor.configuration.actions_class klass.new(records: records, rule: rule, options: options).process end
already_matched()
click to toggle source
# File lib/rules_processor/processor.rb, line 44 def already_matched @already_matched ||= [] end
already_matched?(rule)
click to toggle source
# File lib/rules_processor/processor.rb, line 48 def already_matched?(rule) already_matched.include?(rule.id) end
mark_match(rule)
click to toggle source
# File lib/rules_processor/processor.rb, line 31 def mark_match(rule) matching_result << {rule.id => :match} already_matched << rule.id end
mark_not_match(rule)
click to toggle source
# File lib/rules_processor/processor.rb, line 36 def mark_not_match(rule) matching_result << {rule.id => :not_match} end
mark_skipped(rule)
click to toggle source
# File lib/rules_processor/processor.rb, line 40 def mark_skipped(rule) matching_result << {rule.id => :skipped} end
matching_result()
click to toggle source
# File lib/rules_processor/processor.rb, line 27 def matching_result @matching_result ||= [] end
rule_matches?(rule)
click to toggle source
# File lib/rules_processor/processor.rb, line 52 def rule_matches?(rule) RulesProcessor::RuleMatcher.new(records: records, rule: rule, options: options).matches? end