Class: GemConfig::Rules

Inherits:
Hash
  • Object
show all
Defined in:
lib/gem_config/rules.rb

Instance Method Summary collapse

Instance Method Details

#check(key, value) ⇒ Object

Raises:



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/gem_config/rules.rb', line 8

def check(key, value)
  error_message = case
  when !self.has_key?(key.to_sym)
    'no rule found'
  when self[key.to_sym].has_key?(:classes) && Array(self[key.to_sym][:classes]).none? { |klass| value.is_a?(klass) }
    "must be an instance of one of the following classes: #{Array(self[key.to_sym][:classes]).join(', ')}"
  when self[key.to_sym].has_key?(:values) && !Array(self[key.to_sym][:values]).include?(value)
    "must be one of the following values: #{Array(self[key.to_sym][:values]).join(', ')}"
  end
  raise InvalidKeyError, "#{value} is not a valid value for #{key}: #{error_message}" unless error_message.nil?
end

#has(key, attrs = {}) ⇒ Object



3
4
5
6
# File 'lib/gem_config/rules.rb', line 3

def has(key, attrs = {})
  check_attributes attrs
  self[key.to_sym] = attrs
end