Module: RorHack::HashHack
- Included in:
- Hash, HashWithIndifferentAccess
- Defined in:
- lib/ror_hack/hash_hack.rb
Instance Method Summary collapse
- #add_placeholder(key_array, value = nil) ⇒ Object
- #delete_recursively(array) ⇒ Object
-
#get_last_value(&block) ⇒ Object
默认不做排序,用hash本身的顺序.
-
#sort_eql?(hash) ⇒ Boolean
两个hash的顺序也相等?.
Instance Method Details
#add_placeholder(key_array, value = nil) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/ror_hack/hash_hack.rb', line 3 def add_placeholder(key_array, value = nil) keys = self.keys.map(&:to_sym) key_array.each do |key| next if key.to_sym.in? keys # hash本身已经有这个键,则跳过复制。 if value self[key] = value.deep_dup else self[key] = default(nil) end end self end |
#delete_recursively(array) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/ror_hack/hash_hack.rb', line 29 def delete_recursively(array) self.except!(*array) each do |_k, v| if v.is_a? Hash v.delete_recursively(array) end end self end |
#get_last_value(&block) ⇒ Object
默认不做排序,用hash本身的顺序.
23 24 25 26 27 |
# File 'lib/ror_hack/hash_hack.rb', line 23 def get_last_value(&block) keys = self.keys keys = keys.sort(&block) if block self[keys.last] end |
#sort_eql?(hash) ⇒ Boolean
两个hash的顺序也相等?
17 18 19 20 |
# File 'lib/ror_hack/hash_hack.rb', line 17 def sort_eql?(hash) return false unless hash.is_a? Hash to_a == hash.to_a end |