Class: Hash

Inherits:
Object show all
Defined in:
lib/ext/hash.rb

Instance Method Summary collapse

Instance Method Details

#assert_required_keys(*required_keys) ⇒ Object

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/ext/hash.rb', line 10

def assert_required_keys(*required_keys)
  missing_keys = []
  for required_key in required_keys do
    # if they required key is an array that means the request must contain
    # one of the keys, but not more
    if required_key.is_a?(Array)
      if (keys-required_key).count < keys.count-1 # too many keys sent when they need only one
        missing_keys << "must choose one of either #{required_key.join(' or ')}"
      elsif (keys-required_key).count == keys.count # they didn't send any of the options
        missing_keys << required_key.join(" or ")
      end
    else
      missing_keys << required_key unless keys.include?(required_key)
    end
  end
  raise(ArgumentError, "Missing required key(s): #{missing_keys.join(", ")}") unless missing_keys.empty?
end

#assert_valid_keys(*valid_keys) ⇒ Object

Raises:

  • (ArgumentError)


5
6
7
8
# File 'lib/ext/hash.rb', line 5

def assert_valid_keys(*valid_keys)
  unknown_keys = keys - [valid_keys].flatten
  raise(ArgumentError, "Unknown key(s): #{unknown_keys.join(", ")}") unless unknown_keys.empty?
end

#to_param(namespace = nil) ⇒ Object



28
29
30
31
32
# File 'lib/ext/hash.rb', line 28

def to_param(namespace = nil)
  collect do |key, value|
    value.to_query(namespace ? "#{namespace}[#{key}]" : key)
  end.sort * '&'
end