Module: Hashie::Extensions::DeepMergeConcat
- Included in:
- Orchparty::AST::Node, Orchparty::Context
- Defined in:
- lib/deep_merge.rb
Instance Method Summary collapse
-
#deep_merge_concat(other_hash, &block) ⇒ Object
Returns a new hash with
self
andother_hash
merged recursively. -
#deep_merge_concat!(other_hash, &block) ⇒ Object
Returns a new hash with
self
andother_hash
merged recursively. -
#deep_sort(&block) ⇒ Object
Returns a new hash with
self
andother_hash
merged recursively. -
#deep_sort!(&block) ⇒ Object
Returns a new hash with
self
andother_hash
merged recursively. - #deep_sort_by_key_and_sort_array(exclusions = [], &block) ⇒ Object
- #deep_transform_values(&block) ⇒ Object
- #deep_transform_values!(&block) ⇒ Object
- #transform_keys ⇒ Object
- #transform_keys! ⇒ Object
- #transform_values ⇒ Object
- #transform_values! ⇒ Object
Instance Method Details
#deep_merge_concat(other_hash, &block) ⇒ Object
Returns a new hash with self
and other_hash
merged recursively.
63 64 65 66 67 |
# File 'lib/deep_merge.rb', line 63 def deep_merge_concat(other_hash, &block) copy = dup copy.extend(Hashie::Extensions::DeepMergeConcat) unless copy.respond_to?(:deep_merge_concat!) copy.deep_merge_concat!(other_hash, &block) end |
#deep_merge_concat!(other_hash, &block) ⇒ Object
Returns a new hash with self
and other_hash
merged recursively. Modifies the receiver in place.
71 72 73 74 75 |
# File 'lib/deep_merge.rb', line 71 def deep_merge_concat!(other_hash, &block) return self unless other_hash.is_a?(::Hash) _recursive_merge_concat(self, other_hash, &block) self end |
#deep_sort(&block) ⇒ Object
Returns a new hash with self
and other_hash
merged recursively.
49 50 51 52 53 |
# File 'lib/deep_merge.rb', line 49 def deep_sort(&block) copy = dup copy.extend(Hashie::Extensions::DeepMergeConcat) unless copy.respond_to?(:deep_sort!) copy.deep_sort!(&block) end |
#deep_sort!(&block) ⇒ Object
Returns a new hash with self
and other_hash
merged recursively. Modifies the receiver in place.
57 58 59 60 |
# File 'lib/deep_merge.rb', line 57 def deep_sort!(&block) _recursive_sort(self, &block) self end |
#deep_sort_by_key_and_sort_array(exclusions = [], &block) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/deep_merge.rb', line 34 def deep_sort_by_key_and_sort_array(exclusions = [], &block) self.keys.sort(&block).reduce({}) do |seed, key| seed[key] = self[key] unless exclusions.include?(key.to_s) if seed[key].is_a?(Hash) seed[key] = seed[key].deep_sort_by_key_and_sort_array(exclusions, &block) elsif seed[key].is_a?(Hashie::Array) seed[key] = seed[key].sort(&block) end end seed end end |
#deep_transform_values(&block) ⇒ Object
77 78 79 |
# File 'lib/deep_merge.rb', line 77 def deep_transform_values(&block) _deep_transform_values_in_object(self, &block) end |
#deep_transform_values!(&block) ⇒ Object
81 82 83 |
# File 'lib/deep_merge.rb', line 81 def deep_transform_values!(&block) _deep_transform_values_in_object!(self, &block) end |
#transform_keys ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/deep_merge.rb', line 19 def transform_keys result = self.class.new each_key do |key| result[yield(key)] = self[key] end result end |
#transform_keys! ⇒ Object
27 28 29 30 31 32 |
# File 'lib/deep_merge.rb', line 27 def transform_keys! keys.each do |key| self[yield(key)] = delete(key) end self end |
#transform_values ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/deep_merge.rb', line 5 def transform_values result = self.class.new each do |key, value| result[key] = yield(value) end result end |
#transform_values! ⇒ Object
13 14 15 16 17 |
# File 'lib/deep_merge.rb', line 13 def transform_values! each do |key, value| self[key] = yield(value) end end |