ruby-rails-extensions 2.1.0.pre.rc.1 → 2.1.0.pre.rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9db5274566aa11b9d201cbb888567d1decc0cf37d66da0f97bc0d537ea7eb9dd
4
- data.tar.gz: 926d3931774ec62898dee45d6497cf4f3583a2644b932a498e3c4be80712874b
3
+ metadata.gz: 1e19b1b32a2955a8cdb0ce2d2951d1bfb11a4a1a9a1c139be87538a1941292a7
4
+ data.tar.gz: ea451705fd29181122be0f37babd0ed2f63396932a48fdb68ccfc7dc5d4e31dc
5
5
  SHA512:
6
- metadata.gz: a68d1a5f5fef8be14e6d4f22b4a7708a271d2a693eeabdb270d9c92c11676af3b545fd58e1e18aac160db13f99c1d15979cc3aeaa8e182406a86cd675474240f
7
- data.tar.gz: 8ee76aa134472fb34140a596c17ebe79dbf198d0bcc75aa942ed5270adad2a0a57c27ce3c3e021976be9d2d1104c97b1b20285aadcc6116f63f04988a63fbbfe
6
+ metadata.gz: '0684d8faf49cf4aa891992257cae59adea62ba8bd601eddb14dda375897d8bcd6f950082719200711b6fda6efc9a70566fde72e49489c8945ff6f1f0b0c9a0d3'
7
+ data.tar.gz: f9e3a85a1990970bf9684ae3fd6299475f067764beea4bda669ac67d8e81b4c1c012d35682b932acb16a169eeafc8c6c8a5131ae6a70e00628dbb41c5cd7de89
data/CHANGELOG.md CHANGED
@@ -1,8 +1,12 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
- * Module added:
4
+ 2.1.0 (Unreleased)
5
+ ------------------
6
+
7
+ * Modules added:
5
8
  * `Hash.nmerge` and `Hash.nmerge!`
9
+ * `Hash.left_deep_merge` and `Hash.left_deep_merge!`
6
10
 
7
11
  2.0.1 (2024-07-29)
8
12
  ------------------
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ Hash.class_eval do
4
+ # Do a deep merge, but don't override the key-value pairs on the left.
5
+ #
6
+ # @param other_hash [Hash]
7
+ #
8
+ # @return [Hash]
9
+ #
10
+ def left_deep_merge!(other_hash, &block)
11
+ merge!(other_hash) do |key, this_val, other_val|
12
+ if this_val.is_a?(Hash) && other_hash.is_a?(Hash)
13
+ this_val.left_deep_merge(other_val, &block)
14
+ elsif block_given?
15
+ yield(key, this_val, other_val)
16
+ else
17
+ this_val.presence || other_val
18
+ end
19
+ end
20
+ end
21
+
22
+ # @see #left_deep_merge!
23
+ def left_deep_merge(other_hash, &block)
24
+ dup.left_deep_merge!(other_hash, &block)
25
+ end
26
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyRailsExtensions
4
- VERSION = '2.1.0-rc.1'
4
+ VERSION = '2.1.0-rc.2'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-rails-extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.pre.rc.1
4
+ version: 2.1.0.pre.rc.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brands Insurance
@@ -64,6 +64,7 @@ files:
64
64
  - lib/ruby-rails-extensions/extensions/humanize_symbol.rb
65
65
  - lib/ruby-rails-extensions/extensions/in_utc.rb
66
66
  - lib/ruby-rails-extensions/extensions/input.rb
67
+ - lib/ruby-rails-extensions/extensions/left_deep_merge.rb
67
68
  - lib/ruby-rails-extensions/extensions/month_and_year.rb
68
69
  - lib/ruby-rails-extensions/extensions/month_year.rb
69
70
  - lib/ruby-rails-extensions/extensions/nmerge.rb