module RorHack::HashHack

Public Instance Methods

add_placeholder(key_array, value = nil) click to toggle source
# 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) click to toggle source
# 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) click to toggle source

默认不做排序,用hash本身的顺序.

# 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) click to toggle source

两个hash的顺序也相等?

# 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