Module: RorHack::HashHack

Included in:
Hash, HashWithIndifferentAccess
Defined in:
lib/ror_hack/hash_hack.rb

Instance Method Summary collapse

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的顺序也相等?

Returns:

  • (Boolean)


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