Class: Reflekt::RuleSet
- Inherits:
-
Object
- Object
- Reflekt::RuleSet
- Defined in:
- lib/rule_set.rb
Instance Attribute Summary collapse
-
#rules ⇒ Object
Returns the value of attribute rules.
Instance Method Summary collapse
-
#initialize(meta_map) ⇒ RuleSet
constructor
A new instance of RuleSet.
-
#result ⇒ Array
Get the results of the rules.
- #test(value) ⇒ Object
-
#train(meta) ⇒ Object
Train rule set on metadata.
Constructor Details
#initialize(meta_map) ⇒ RuleSet
Returns a new instance of RuleSet.
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rule_set.rb', line 26 def initialize() # The rules that apply to meta types. @meta_map = # The types of meta this rule set applies to. # Rules are only validated on their supported meta type. @meta_types = Set.new() @rules = {} end |
Instance Attribute Details
#rules ⇒ Object
Returns the value of attribute rules.
21 22 23 |
# File 'lib/rule_set.rb', line 21 def rules @rules end |
Instance Method Details
#result ⇒ Array
Get the results of the rules.
97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/rule_set.rb', line 97 def result() rules = {} @rules.each do |key, rule| rules[rule.class] = rule.result() end return rules end |
#test(value) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/rule_set.rb', line 70 def test(value) result = true = MetaBuilder.(value) # Fail if value's meta type not testable by rule set. unless @meta_types.include? return false end @rules.each do |klass, rule| if (rule.type == ) unless rule.test(value) result = false end end end return result end |
#train(meta) ⇒ Object
Train rule set on metadata.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/rule_set.rb', line 44 def train() # Track supported meta types. = [:type] @meta_types << # Get rule types for this meta type. if @meta_map.key? @meta_map[].each do |rule_type| # Ensure rule exists. if @rules[rule_type].nil? @rules[rule_type] = rule_type.new() end # Train rule. @rules[rule_type].train() end end end |