Class: CLabs::CaseGen::Criteria

Inherits:
Object
  • Object
show all
Defined in:
lib/agents/sets.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ Criteria

Returns a new instance of Criteria.



88
89
90
91
92
# File 'lib/agents/sets.rb', line 88

def initialize(data)
  @data = data
  @equalities = {}
  parse
end

Instance Attribute Details

#equalitiesObject (readonly)

Returns the value of attribute equalities.



86
87
88
# File 'lib/agents/sets.rb', line 86

def equalities
  @equalities
end

#set_namesObject (readonly)

Returns the value of attribute set_names.



86
87
88
# File 'lib/agents/sets.rb', line 86

def set_names
  @set_names
end

#set_valuesObject (readonly)

Returns the value of attribute set_values.



86
87
88
# File 'lib/agents/sets.rb', line 86

def set_values
  @set_values
end

Instance Method Details

#match(hash) ⇒ Object

hash keys should be valid set names and hash values should be valid set values in the named set



109
110
111
112
113
114
115
116
117
# File 'lib/agents/sets.rb', line 109

def match(hash)
  # must match all equalities
  @equalities.each_pair do |eq_name, eq_value|
    actual_value = hash[eq_name]
    return false if actual_value.nil?
    return false if actual_value != eq_value
  end
  return true
end

#parseObject



94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/agents/sets.rb', line 94

def parse
  @data.split(/AND/).each do |bit|
    set_name, set_value = bit.split(/==|=/)
    set_name.strip!; set_value.strip!
    if @equalities.keys.include?(set_name)
      raise ParserException.new("Rule cannot have the same set <#{set_name}> equal to different values <#{@equalities[set_name]}, #{set_value}>")
    end
    @equalities[set_name] = set_value
  end
  @set_names = @equalities.keys
  @set_values = @equalities.values
end

#to_sObject



119
120
121
# File 'lib/agents/sets.rb', line 119

def to_s
  @data
end