Class: Hash
Instance Method Summary collapse
- #assert_required_keys(*required_keys) ⇒ Object
- #assert_valid_keys(*valid_keys) ⇒ Object
- #to_param(namespace = nil) ⇒ Object
Instance Method Details
#assert_required_keys(*required_keys) ⇒ Object
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
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 |