Class: Hash
- Inherits:
-
Object
- Object
- Hash
- Defined in:
- lib/tengine/support/core_ext/hash/keys.rb,
lib/tengine/support/core_ext/hash/compact.rb,
lib/tengine/support/core_ext/hash/deep_dup.rb
Instance Method Summary collapse
-
#compact ⇒ Object
Intuitive, see the source.
-
#compact! ⇒ Object
Destructive elimination of nil, like Array#compact!.
-
#deep_dup ⇒ Object
Returns a deep copy of hash.
-
#deep_stringify_keys ⇒ Object
Return a new hash with all keys converted to strings recursively.
-
#deep_stringify_keys! ⇒ Object
Destructively convert all keys to strings recursively.
-
#deep_symbolize_keys ⇒ Object
Return a new hash with all keys converted to symbols recursively, as long as they respond to
to_sym
. -
#deep_symbolize_keys! ⇒ Object
Destructively convert all keys to symbols recursively, as long as they respond to
to_sym
.
Instance Method Details
#compact ⇒ Object
Intuitive, see the source.
12 13 14 |
# File 'lib/tengine/support/core_ext/hash/compact.rb', line 12 def compact dup.tap {|i| i.compact! } end |
#compact! ⇒ Object
Destructive elimination of nil, like Array#compact!
5 6 7 8 9 |
# File 'lib/tengine/support/core_ext/hash/compact.rb', line 5 def compact! reject! do |k, v| v.nil? end end |
#deep_dup ⇒ Object
Returns a deep copy of hash.
16 17 18 19 20 21 22 23 |
# File 'lib/tengine/support/core_ext/hash/deep_dup.rb', line 16 def deep_dup duplicate = self.dup duplicate.each_pair do |k,v| tv = duplicate[k] duplicate[k] = tv.respond_to?(:deep_dup) && v.respond_to?(:deep_dup) ? tv.deep_dup : v end duplicate end |
#deep_stringify_keys ⇒ Object
Return a new hash with all keys converted to strings recursively.
8 9 10 |
# File 'lib/tengine/support/core_ext/hash/keys.rb', line 8 def deep_stringify_keys deep_dup.deep_stringify_keys! end |
#deep_stringify_keys! ⇒ Object
Destructively convert all keys to strings recursively.
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/tengine/support/core_ext/hash/keys.rb', line 13 def deep_stringify_keys! stringify_keys! # active_support/core_ext/hash/keysのメソッドをそのまま使う values.each do |value| if value.respond_to?(:deep_stringify_keys!) value.deep_stringify_keys! elsif value.respond_to?(:each) value.each{|v| v.deep_stringify_keys! if v.respond_to?(:deep_stringify_keys!)} end end self end |
#deep_symbolize_keys ⇒ Object
Return a new hash with all keys converted to symbols recursively, as long as they respond to to_sym
.
27 28 29 |
# File 'lib/tengine/support/core_ext/hash/keys.rb', line 27 def deep_symbolize_keys deep_dup.deep_symbolize_keys! end |
#deep_symbolize_keys! ⇒ Object
Destructively convert all keys to symbols recursively, as long as they respond to to_sym
.
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/tengine/support/core_ext/hash/keys.rb', line 33 def deep_symbolize_keys! symbolize_keys! # active_support/core_ext/hash/keysのメソッドをそのまま使う values.each do |value| if value.respond_to?(:deep_symbolize_keys!) value.deep_symbolize_keys! elsif value.respond_to?(:each) value.each{|v| v.deep_symbolize_keys! if v.respond_to?(:deep_symbolize_keys!)} end end self end |