Class: Hash
- Inherits:
-
Object
- Object
- Hash
- Defined in:
- lib/lemon_way/hash.rb
Instance Method Summary collapse
-
#camelize_keys(first_letter = :lower) ⇒ Object
Return a new hash with all keys camelized.
-
#camelize_keys!(first_letter = :lower) ⇒ Object
Destructively camelize all keys.
- #ensure_keys(required_keys = [], optional_keys = []) ⇒ Object
-
#underscore_keys(recursive = false) ⇒ Object
Return a new hash with all keys underscored.
-
#underscore_keys!(recursive = false) ⇒ Object
Destructively underscore all keys.
Instance Method Details
#camelize_keys(first_letter = :lower) ⇒ Object
Return a new hash with all keys camelized.
{ :first_name => 'Rob', :years_old => '28' }.camelize_keys
#=> { :firstName => "Rob", :yearsOld => "28" }
8 9 10 |
# File 'lib/lemon_way/hash.rb', line 8 def camelize_keys(first_letter = :lower) dup.camelize_keys!(first_letter) end |
#camelize_keys!(first_letter = :lower) ⇒ Object
Destructively camelize all keys. Same as camelize_keys, but modifies self.
14 15 16 17 18 19 20 |
# File 'lib/lemon_way/hash.rb', line 14 def camelize_keys!(first_letter = :lower) keys.each do |key| new_key = key.to_s.camelize(first_letter) self[key.is_a?(Symbol) ? new_key.to_sym : new_key] = delete(key) end self end |
#ensure_keys(required_keys = [], optional_keys = []) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/lemon_way/hash.rb', line 43 def ensure_keys(required_keys=[], optional_keys=[]) assert_valid_keys(required_keys + optional_keys) required_keys.each do |k| raise(ArgumentError, "Required key not found: #{k}") unless has_key?(k) end self end |
#underscore_keys(recursive = false) ⇒ Object
Return a new hash with all keys underscored.
{ :firstName => "Rob", :yearsOld => "28" }.underscore_keys
#=> { :first_name => 'Rob', :years_old => '28' }
26 27 28 |
# File 'lib/lemon_way/hash.rb', line 26 def underscore_keys(recursive=false) dup.underscore_keys!(recursive) end |
#underscore_keys!(recursive = false) ⇒ Object
Destructively underscore all keys. Same as underscore_keys, but modifies self.
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/lemon_way/hash.rb', line 32 def underscore_keys!(recursive=false) keys.each do |key| new_key = key.to_s.underscore new_value = delete(key) new_value.underscore_keys!(recursive) if recursive and new_value.is_a? Hash new_value.map{|v| v.underscore_keys!(recursive) if v.is_a? Hash } if recursive and new_value.is_a? Array self[key.is_a?(Symbol) ? new_key.to_sym : new_key] = new_value end self end |