ruby-rails-extensions 2.0.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: a6add5f21ad9085c223bdb38ec6ae1d11c9ff67004762933eb5f9f8721c1cfac
4
- data.tar.gz: acb3e894e9f31d5b9f40f210f3da4176dcf399d5fda00ec3e2d44d5ab3b7e414
3
+ metadata.gz: 1e19b1b32a2955a8cdb0ce2d2951d1bfb11a4a1a9a1c139be87538a1941292a7
4
+ data.tar.gz: ea451705fd29181122be0f37babd0ed2f63396932a48fdb68ccfc7dc5d4e31dc
5
5
  SHA512:
6
- metadata.gz: 22e10cfb20f5b8ed90198c9f0b75dd6c596bc6e08c8cadb6f01e141ba1448b7c33439e8546c58d4e19d7ecfb70a37e46c1b2b8d8fed69d25e27bfa6262966562
7
- data.tar.gz: f92d99d927fdb1f0d22c028b54813a52dda7963471b23cbfe5388b2f0cfde5182a9b5d4b9701d6e0bf2f3012ef725f0b3fcedbaa154c378be71763e77c7f79fb
6
+ metadata.gz: '0684d8faf49cf4aa891992257cae59adea62ba8bd601eddb14dda375897d8bcd6f950082719200711b6fda6efc9a70566fde72e49489c8945ff6f1f0b0c9a0d3'
7
+ data.tar.gz: f9e3a85a1990970bf9684ae3fd6299475f067764beea4bda669ac67d8e81b4c1c012d35682b932acb16a169eeafc8c6c8a5131ae6a70e00628dbb41c5cd7de89
data/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 2.1.0 (Unreleased)
5
+ ------------------
6
+
7
+ * Modules added:
8
+ * `Hash.nmerge` and `Hash.nmerge!`
9
+ * `Hash.left_deep_merge` and `Hash.left_deep_merge!`
10
+
4
11
  2.0.1 (2024-07-29)
5
12
  ------------------
6
13
 
@@ -38,8 +38,8 @@ module RubyRailsExtensions
38
38
  scope(:"#{column_name}", -> { where(column_name => true) })
39
39
  scope(:"#{negative}", -> { where(column_name => false) })
40
40
 
41
- define_method("#{negative}?") do
42
- !__send__("#{column_name}?")
41
+ define_method(:"#{negative}?") do
42
+ !__send__(:"#{column_name}?")
43
43
  end
44
44
  end
45
45
  end
@@ -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
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ Hash.class_eval do
4
+ # Does a typical merge, but this will remove blank values on the right side.
5
+ #
6
+ # @param other_hash [Hash]
7
+ #
8
+ # @return [Hash]
9
+ #
10
+ def nmerge!(other_hash)
11
+ merge!(other_hash) do |key, this_val, other_val|
12
+ if block_given?
13
+ yield(key, this_val, other_val)
14
+ else
15
+ other_val.presence || this_val
16
+ end
17
+ end
18
+ end
19
+
20
+ # @see #merge!
21
+ def nmerge(other_hash, &block)
22
+ dup.nmerge!(other_hash, &block)
23
+ end
24
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyRailsExtensions
4
- VERSION = '2.0.1'
4
+ VERSION = '2.1.0-rc.2'
5
5
  end
@@ -87,7 +87,7 @@ module RubyRailsExtensions
87
87
  BOOLEAN_GEMS.each do |extension_name|
88
88
  include_extension = flag_name(extension_name)
89
89
 
90
- public_send("#{include_extension}=", true)
90
+ public_send(:"#{include_extension}=", true)
91
91
  end
92
92
  end
93
93
 
@@ -114,7 +114,7 @@ module RubyRailsExtensions
114
114
  yield(configuration)
115
115
 
116
116
  Configuration::BOOLEAN_GEMS.each do |extension|
117
- next unless configuration.public_send("#{extension}?")
117
+ next unless configuration.public_send(:"#{extension}?")
118
118
 
119
119
  require_relative("ruby-rails-extensions/extensions/#{extension}")
120
120
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-rails-extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0.pre.rc.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brands Insurance
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-29 00:00:00.000000000 Z
11
+ date: 2024-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop-rubomatic-rails
@@ -64,8 +64,10 @@ 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
70
+ - lib/ruby-rails-extensions/extensions/nmerge.rb
69
71
  - lib/ruby-rails-extensions/extensions/no_keys.rb
70
72
  - lib/ruby-rails-extensions/extensions/no_values.rb
71
73
  - lib/ruby-rails-extensions/extensions/only_some.rb
@@ -115,9 +117,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
115
117
  version: 3.0.1
116
118
  required_rubygems_version: !ruby/object:Gem::Requirement
117
119
  requirements:
118
- - - ">="
120
+ - - ">"
119
121
  - !ruby/object:Gem::Version
120
- version: '0'
122
+ version: 1.3.1
121
123
  requirements: []
122
124
  rubygems_version: 3.2.15
123
125
  signing_key: