class Reflekt::RuleSet
Attributes
rules[RW]
Public Class Methods
new(meta_map)
click to toggle source
@param meta_map [Hash] The rules to apply to each data type.
# File lib/rule_set.rb, line 26 def initialize(meta_map) # The rules that apply to meta types. @meta_map = 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
Public Instance Methods
result()
click to toggle source
Get the results of the rules.
@return [Array] The rules.
# 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)
click to toggle source
@param value [Dynamic]
# File lib/rule_set.rb, line 70 def test(value) result = true meta_type = MetaBuilder.data_type_to_meta_type(value) # Fail if value's meta type not testable by rule set. unless @meta_types.include? meta_type return false end @rules.each do |klass, rule| if (rule.type == meta_type) unless rule.test(value) result = false end end end return result end
train(meta)
click to toggle source
Train rule set on metadata.
@param meta [Hash] The metadata to train on.
# File lib/rule_set.rb, line 44 def train(meta) # Track supported meta types. meta_type = meta[:type] @meta_types << meta_type # Get rule types for this meta type. if @meta_map.key? meta_type @meta_map[meta_type].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(meta) end end end