Class: Hash
Class Method Summary collapse
Instance Method Summary collapse
- #add(other_hash) ⇒ Object
- #clear_values ⇒ Object
- #deep_add(other_hash) ⇒ Object
- #deep_clear_values ⇒ Object
- #deep_diff(other_hash) ⇒ Object
- #no_blank ⇒ Object
- #reverse_deep_merge!(other_hash) ⇒ Object
- #store_multi(value, *keys) ⇒ Object
- #val(*array) ⇒ Object
Class Method Details
.convert_hash_to_ordered_hash(object) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/ab_admin/core_ext/hash.rb', line 10 def self.convert_hash_to_ordered_hash(object) if object.is_a?(Hash) array = object.to_a array.sort! { |a, b| a[0].to_s <=> b[0].to_s } array.each_with_object(ActiveSupport::OrderedHash.new) { |v, h| h[v[0]] = convert_hash_to_ordered_hash(v[1]) } # elsif object.is_a?(Array) # array = Array.new # object.each_with_index { |v, i| array[i] = convert_hash_to_ordered_hash(v) } # return array else object end end |
Instance Method Details
#add(other_hash) ⇒ Object
66 67 68 69 70 |
# File 'lib/ab_admin/core_ext/hash.rb', line 66 def add(other_hash) other_hash.each_pair do |k, v| self[k] = v if self.keys.include?(k) end end |
#clear_values ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/ab_admin/core_ext/hash.rb', line 35 def clear_values result = {} self.each_key do |key| result[key] = '' end result end |
#deep_add(other_hash) ⇒ Object
56 57 58 59 60 61 62 63 64 |
# File 'lib/ab_admin/core_ext/hash.rb', line 56 def deep_add(other_hash) other_hash.each_pair do |k, v| tv = self[k] if self[k] self[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? tv.deep_add(v) : v end end self end |
#deep_clear_values ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/ab_admin/core_ext/hash.rb', line 24 def deep_clear_values self.each_key do |key| if self[key].is_a?(Hash) self[key] = self[key].deep_clear_values else self[key] = '' end end self end |
#deep_diff(other_hash) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/ab_admin/core_ext/hash.rb', line 43 def deep_diff(other_hash) other_hash.each_pair do |k, v| if self[k].is_a?(Hash) && v.is_a?(Hash) self[k] = self[k].deep_diff(v) self.delete(k) if self[k].empty? self[k] else self.delete(k) end end self end |
#no_blank ⇒ Object
99 100 101 |
# File 'lib/ab_admin/core_ext/hash.rb', line 99 def no_blank reject { |k, v| v.blank? } end |
#reverse_deep_merge!(other_hash) ⇒ Object
2 3 4 5 6 7 8 |
# File 'lib/ab_admin/core_ext/hash.rb', line 2 def reverse_deep_merge!(other_hash) other_hash.each_pair do |k, v| tv = self[k] self[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? v.deep_merge!(tv) : (self[k] || v) end self end |
#store_multi(value, *keys) ⇒ Object
88 89 90 91 92 93 94 95 96 97 |
# File 'lib/ab_admin/core_ext/hash.rb', line 88 def store_multi(value, *keys) key = keys.shift self[key] ||= {} if keys.empty? self[key] = value else self[key] = self[key].store_multi(value, *keys) end self end |