eac_ruby_utils 0.110.1 → 0.112.0

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: 290ef6d02ac4c1937fbafee4fc646fc344dbaecd4a290cb3fc400f6d053cf7a7
4
- data.tar.gz: 71bb0f660a223254f4644d6f16667a1c7fdd990f2a5b8c97dfaf260028c47bc9
3
+ metadata.gz: d4e72428fde957fae996836371e62fcae0017805944e1dff3c714500b4d3659c
4
+ data.tar.gz: b419f3b1fb13d82c37c6fa8fed357e0a9a16169318972bd3f57271e73a09d46b
5
5
  SHA512:
6
- metadata.gz: c7e8fc8a029e673628315be510e4f5e49b67fd5ae3819715e2b1e32e0ae9e414ae813844d434b5238ea95e5fa04af9fb9a70c4eb35df4f996c775dfed623a338
7
- data.tar.gz: 66978244be21e8d56b99209fd9e888555df5760d4ac0b72aec780aecc9a49f9f8fd743b42465f7f387d16bd0fa3ccfab8b5fd95d3063cd0a87f37f54d4892a48
6
+ metadata.gz: de10ee898b6b0e23d17949b454e1a79e631170e2356926d03732f3ebe4dd29dac7768e5651fcd65aba3ac16c333681bf96ccda7e1b81bff0b3057d045e7ed2f1
7
+ data.tar.gz: c845230c38a3ad30c9d502978d1fea5fd144a8d34ca4a044f56479f26847a089256e94c7a0ec301b126ef236cbaf59fbdd12ccff783e0976e8fca90ca47e829c
@@ -7,35 +7,46 @@ module EacRubyUtils
7
7
  module Immutable
8
8
  class HashAccessor < ::EacRubyUtils::Immutable::BaseAccessor
9
9
  def apply(klass)
10
- apply_get(klass)
11
- apply_set(klass)
10
+ apply_plural(klass)
11
+ apply_singular(klass)
12
12
  end
13
13
 
14
14
  def immutable_value_get(object)
15
15
  super || {}
16
16
  end
17
17
 
18
- def immutable_value_set(object, key, value)
19
- duplicate_object(object) do |old_value|
20
- (old_value || {}).merge(key => value)
21
- end
18
+ def immutable_value_get_single(object, key)
19
+ immutable_value_get(object)[key]
20
+ end
21
+
22
+ def immutable_value_set(object, new_hash)
23
+ duplicate_object(object) { |_old_value| new_hash }
24
+ end
25
+
26
+ def immutable_value_set_single(object, key, value)
27
+ immutable_value_set(object, immutable_value_get(object).merge(key => value))
22
28
  end
23
29
 
24
30
  private
25
31
 
26
- def apply_get(klass)
32
+ def apply_plural(klass)
27
33
  accessor = self
28
- klass.send(:define_method, ::ActiveSupport::Inflector.pluralize(name)) do
29
- accessor.immutable_value_get(self)
34
+ klass.send(:define_method, ::ActiveSupport::Inflector.pluralize(name)) do |*args|
35
+ case args.count
36
+ when 0 then next accessor.immutable_value_get(self)
37
+ when 1 then next accessor.immutable_value_set(self, args[0])
38
+ else
39
+ raise ::ArgumentError, "wrong number of arguments (given #{args.count}, expected 0..1)"
40
+ end
30
41
  end
31
42
  end
32
43
 
33
- def apply_set(klass)
44
+ def apply_singular(klass)
34
45
  accessor = self
35
46
  klass.send(:define_method, name) do |*args|
36
47
  case args.count
37
- when 1 then next accessor.immutable_value_get(self, args[0])
38
- when 2 then next accessor.immutable_value_set(self, *args[0..1])
48
+ when 1 then next accessor.immutable_value_get_single(self, args[0])
49
+ when 2 then next accessor.immutable_value_set_single(self, *args[0..1])
39
50
  else
40
51
  raise ::ArgumentError, "wrong number of arguments (given #{args.count}, expected 1..2)"
41
52
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+
5
+ class Pathname
6
+ # Indicate if +self+ is child of +parent_path+.
7
+ #
8
+ # @return [Boolean]
9
+ def child_of?(parent_path)
10
+ self_parts = expand_path.each_filename.to_a
11
+ parent_parts = parent_path.expand_path.each_filename.to_a
12
+ return false if self_parts == parent_parts
13
+
14
+ parent_parts.zip(self_parts).all? { |x, y| x == y }
15
+ end
16
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.110.1'
4
+ VERSION = '0.112.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.110.1
4
+ version: 0.112.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: 2023-01-05 00:00:00.000000000 Z
11
+ date: 2023-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -261,6 +261,7 @@ files:
261
261
  - lib/eac_ruby_utils/patches/pathname/assert_parent.rb
262
262
  - lib/eac_ruby_utils/patches/pathname/basename_noext.rb
263
263
  - lib/eac_ruby_utils/patches/pathname/basename_sub.rb
264
+ - lib/eac_ruby_utils/patches/pathname/child_of.rb
264
265
  - lib/eac_ruby_utils/patches/pathname/if_exist.rb
265
266
  - lib/eac_ruby_utils/patches/pathname/mkpath_s.rb
266
267
  - lib/eac_ruby_utils/patches/pathname/parent_n.rb