eac_ruby_utils 0.95.3 → 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: ef3e2b0fdd6e17edd271942ab1b58aff4a5f6a40e16758a2477813f18bc0844c
4
- data.tar.gz: b7114ad5527fd9f6f01843cfbf5d186bf710e79442bc5b138df2ef38e85f662b
3
+ metadata.gz: 536eb071e735c3f9aeaa4a1282b06dd1d119c740dc6a04408dead8ab4573d534
4
+ data.tar.gz: f6ff16c4ee2e2547a1d29f30006f5a533cef687b6e583746e88c4a35ad2c67e1
5
5
  SHA512:
6
- metadata.gz: 735e660b3b5e8a28a1929a6553b52192e82bc5381c3867c72804f26bc6a6138322ddc27cab0991797b85f675d8be30a8d3d1a3339c146d177c99f045a64a647f
7
- data.tar.gz: 4bc776e496dd1746b49c9ea64ce49534bcaff9bf277061fcb8b184870a96d74519a6e678566dad49e9c0d1d4cc5b675945d95183ea41afef3e9730733720cdf8
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,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.95.3'
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.3
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-07-21 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