Class: DeeperHash::Meta
- Inherits:
-
Object
- Object
- DeeperHash::Meta
- Defined in:
- lib/deeper_hash/meta.rb
Class Method Summary collapse
- .each(hash, &block) ⇒ Object
- .include?(hash, other_hash) ⇒ Boolean
- .merge(hash, other_hash) ⇒ Object
- .reject(hash, &block) ⇒ Object
- .select(hash, &block) ⇒ Object
- .set(hash, value, keys) ⇒ Object
- .transform_keys(hash, &block) ⇒ Object
- .transform_values(hash, &block) ⇒ Object
Class Method Details
.each(hash, &block) ⇒ Object
6 7 8 |
# File 'lib/deeper_hash/meta.rb', line 6 def each(hash, &block) traverse(hash, [], &block) end |
.include?(hash, other_hash) ⇒ Boolean
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/deeper_hash/meta.rb', line 46 def include?(hash, other_hash) return true if hash == other_hash other_hash.each do |k, v| if hash[k].is_a?(Hash) && v.is_a?(Hash) return false unless include?(hash[k], v) else return false unless hash[k] == v end end true end |
.merge(hash, other_hash) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/deeper_hash/meta.rb', line 34 def merge(hash, other_hash) hash.dup.tap do |h| other_hash.each do |k, v| if h[k].is_a?(Hash) && v.is_a?(Hash) h[k] = merge(h[k], v) else h[k] = v end end end end |
.reject(hash, &block) ⇒ Object
28 29 30 31 32 |
# File 'lib/deeper_hash/meta.rb', line 28 def reject(hash, &block) transform(hash) do |k, v, h| h[k] = v unless block.call(k,v) end end |
.select(hash, &block) ⇒ Object
22 23 24 25 26 |
# File 'lib/deeper_hash/meta.rb', line 22 def select(hash, &block) transform(hash) do |k, v, h| h[k] = v if block.call(k,v) end end |
.set(hash, value, keys) ⇒ Object
59 60 61 62 63 |
# File 'lib/deeper_hash/meta.rb', line 59 def set(hash, value, keys) keys[0..-2].inject(hash) do |acc, e| acc[e] ||= {} end[keys.last] = value end |
.transform_keys(hash, &block) ⇒ Object
10 11 12 13 14 |
# File 'lib/deeper_hash/meta.rb', line 10 def transform_keys(hash, &block) transform(hash, include_hash_values: true) do |k, v, h| h[block.call(k)] = v end end |
.transform_values(hash, &block) ⇒ Object
16 17 18 19 20 |
# File 'lib/deeper_hash/meta.rb', line 16 def transform_values(hash, &block) transform(hash) do |k, v, h| h[k] = block.call(v) unless v.is_a?(Hash) end end |