eac_ruby_utils 0.95.1 → 0.96.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5a2b2410fc984940c1cc192be3ffaac013123a4c0fd0fd988a4b43a672bee200
4
- data.tar.gz: 35dd27fbf96e03aab9a57f43929c46d283a2abe43d6694701992d9c757e1c990
3
+ metadata.gz: 536eb071e735c3f9aeaa4a1282b06dd1d119c740dc6a04408dead8ab4573d534
4
+ data.tar.gz: f6ff16c4ee2e2547a1d29f30006f5a533cef687b6e583746e88c4a35ad2c67e1
5
5
  SHA512:
6
- metadata.gz: 665c44626a59bea44ed2970a62145531d00c7a62533d5be77319ff1ba38187851622d317df989ffa998f6f92a39d43655199b637b81448b4a506bc80ce03745d
7
- data.tar.gz: f4444dbfa9b43c2c953641b20f0eba35873b957851ca65bdc221a9435c9542dd2231a8a87e27e9bda26fd8437b9952bbc126f8a4a836a0714b1da90f5fa4f546
6
+ metadata.gz: 04bddf5187e0cc95d70a24f2e1df9a679201b3eae3f5b6bef1bdba45f44411ce19ee11c0907c39e34e29d35fed999a42932ce72a6de6478514073d1319a063e4
7
+ data.tar.gz: 4911aaf282906bf1da118dc4f0a3704cc5072fee08420bf68a45ef33d3e24e0e092e722913ec55b3ab424556a765283b7e377a1ae690ba6dab8f18a45e7e1594
@@ -8,13 +8,26 @@ module EacRubyUtils
8
8
  module Immutable
9
9
  class ArrayAccessor < ::EacRubyUtils::Immutable::BaseAccessor
10
10
  def apply(klass)
11
+ apply_singular(klass)
12
+ apply_plural(klass)
13
+ end
14
+
15
+ def apply_plural(klass)
11
16
  accessor = self
12
- klass.send(:define_method, name) do |value|
13
- accessor.immutable_value_set(self, value)
17
+ klass.send(:define_method, ::ActiveSupport::Inflector.pluralize(name)) do |*args|
18
+ case args.count
19
+ when 0 then next accessor.immutable_value_get(self)
20
+ when 1 then next accessor.immutable_value_set(self, args.first)
21
+ else
22
+ raise ::ArgumentError, "wrong number of arguments (given #{args.count}, expected 0..1)"
23
+ end
14
24
  end
25
+ end
15
26
 
16
- klass.send(:define_method, ::ActiveSupport::Inflector.pluralize(name)) do
17
- accessor.immutable_value_get(self)
27
+ def apply_singular(klass)
28
+ accessor = self
29
+ klass.send(:define_method, name) do |value|
30
+ accessor.immutable_value_push(self, value)
18
31
  end
19
32
  end
20
33
 
@@ -22,11 +35,15 @@ module EacRubyUtils
22
35
  super || []
23
36
  end
24
37
 
25
- def immutable_value_set(object, value)
38
+ def immutable_value_push(object, value)
26
39
  duplicate_object(object) do |old_value|
27
40
  (old_value || []) + [value]
28
41
  end
29
42
  end
43
+
44
+ def immutable_value_set(object, value)
45
+ duplicate_object(object) { |_old_value| value }
46
+ end
30
47
  end
31
48
  end
32
49
  end
@@ -1,15 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'bundler'
4
+
3
5
  module EacRubyUtils
4
6
  module Ruby
5
7
  class << self
6
8
  # Executes a block in an environment when the variables BUNDLE* and RUBY* are removed.
7
9
  def on_clean_environment
8
- on_clean_envvars('BUNDLE', 'RUBY') { yield }
10
+ bundler_with_unbundled_env do
11
+ on_clean_envvars('BUNDLE', 'RUBY') { yield }
12
+ end
9
13
  end
10
14
 
11
15
  private
12
16
 
17
+ def bundler_with_unbundled_env(&block)
18
+ if ::Bundler.respond_to?(:with_unbundled_env)
19
+ ::Bundler.with_unbundled_env(&block)
20
+ else
21
+ ::Bundler.with_clean_env(&block)
22
+ end
23
+ end
24
+
13
25
  def on_clean_envvars(*start_with_vars)
14
26
  old_values = envvars_starting_with(start_with_vars)
15
27
  old_values.each_key { |k| ENV.delete(k) }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.95.1'
4
+ VERSION = '0.96.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_ruby_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.95.1
4
+ version: 0.96.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-19 00:00:00.000000000 Z
11
+ date: 2022-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -44,6 +44,20 @@ dependencies:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '2.6'
47
+ - !ruby/object:Gem::Dependency
48
+ name: bundler
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: filesize
49
63
  requirement: !ruby/object:Gem::Requirement