refinements 12.8.0 → 12.9.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: 81ecb80884f2fcc3c01f67b069fc4d8e46bf6c0dec1a03013a0f4183800c971e
4
- data.tar.gz: 85ced417ccf67b5940b1441df1cacc2d9ca32812e4bc9f89d775e17574cce1e9
3
+ metadata.gz: 229ada32a4378800013462184db88be59d33109cbbd63c8c6378add52fc7b321
4
+ data.tar.gz: 4f0291390f858b45e2066dc9eac5e3f06ceef5c9e1051160aa7c625e734c78c4
5
5
  SHA512:
6
- metadata.gz: a9d24dfcb5491cda43127501056b1cbb74fa13286964bcfca60107e42ca2bb67c56e22e35fd8773f83e91c16122c97d2723ac6ca0fc1094c6bd746bee7c5bff6
7
- data.tar.gz: c8bbde575d08783fbf64d303fac8cb8cc0b0215b7bdc8e532ce1180f8451bc12e02391c9e22300edaba464ee50a1d2b1eb31b4081e8a234350e174ddc8cc7c08
6
+ metadata.gz: dbe61e5483ff24ffe0d9852e3f1c34e613f53a48f8a96cb15b862bf2528c448df71e9357d2910068b7e41275a916a9169f99e6b5b67c355df73eaf3e6ac2d124
7
+ data.tar.gz: 3f77b617a157b3d9be6735a08a9340ddd945642107d5e2728e384f6496197a44e180cfcce8c5738ec5ea509df883fcc5ca3b1261ffaddeaedbcfe0764987d9d0
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -635,7 +635,7 @@ Any object that _is not_ the same type will have a `nil` value as shown in the l
635
635
 
636
636
  Fetches value for exiting or missing key. Behavior is identical to `#fetch` except when the value of
637
637
  the key is `nil` you'll get the default value instead. This eliminates the need for using an _or_
638
- expression `example.fetch(:desired_key) || "default_value"`.
638
+ expression: `example.fetch(:desired_key) || "default_value"`.
639
639
 
640
640
  [source,ruby]
641
641
  ----
@@ -650,8 +650,7 @@ expression `example.fetch(:desired_key) || "default_value"`.
650
650
 
651
651
  ===== #flatten_keys
652
652
 
653
- Flattens nested keys as top-level keys without mutating itself. Does not handle nested arrays,
654
- though.
653
+ Flattens nested keys as top-level keys without mutating itself. Keys are converted to symbols. Does not handle nested arrays.
655
654
 
656
655
  [source,ruby]
657
656
  ----
@@ -665,8 +664,7 @@ example # {a: {b: 1}}
665
664
 
666
665
  ===== #flatten_keys!
667
666
 
668
- Flattens nested keys as top-level keys while mutating itself. Does not handle nested arrays,
669
- though.
667
+ Flattens nested keys as top-level keys while mutating itself. Keys are converted to symbols. Does not handle nested arrays.
670
668
 
671
669
  [source,ruby]
672
670
  ----
@@ -747,6 +745,52 @@ example.symbolize_keys! # {a: 1, b: 2}
747
745
  example # {a: 1, b: 2}
748
746
  ----
749
747
 
748
+ ===== #transform_value
749
+
750
+ Transforms a value for the specified key _only_ if the key exists and a block is given. Otherwise, the original hash is answered. Does not mutate itself.
751
+
752
+ [source,ruby]
753
+ ----
754
+ example = {a: 1, b: 2}
755
+
756
+ example.transform_value :b # {a: 1, b: 2}
757
+ example.transform_value(:b) { 20 } # {a: 1, b: 20}
758
+ example.transform_value(:b) { |value| value * 10 } # {a: 1, b: 20}
759
+ example.transform_value :c # {a: 1, b: 2}
760
+ example.transform_value(:c) { :bogus } # {a: 1, b: 2}
761
+ ----
762
+
763
+ The original object _is not_ mutated:
764
+
765
+ [source,ruby]
766
+ ----
767
+ example.transform_value(:b) { 20 } # {a: 1, b: 20}
768
+ example # {a: 1, b: 2}
769
+ ----
770
+
771
+ ===== #transform_value!
772
+
773
+ Transforms a value for the specified key _only_ if the key exists and a block is given. Otherwise, the original hash is answered. Mutates itself.
774
+
775
+ [source,ruby]
776
+ ----
777
+ example = {a: 1, b: 2}
778
+
779
+ example.transform_value! :b # {a: 1, b: 2}
780
+ example.transform_value!(:b) { 20 } # {a: 1, b: 20}
781
+ example.transform_value!(:b) { |value| value * 10 } # {a: 1, b: 20}
782
+ example.transform_value! :c # {a: 1, b: 2}
783
+ example.transform_value!(:c) { :bogus } # {a: 1, b: 2}
784
+ ----
785
+
786
+ The original object _is_ mutated:
787
+
788
+ [source,ruby]
789
+ ----
790
+ example.transform_value!(:b) { 20 } # {a: 1, b: 20}
791
+ example # {a: 1, b: 20}
792
+ ----
793
+
750
794
  ===== #transform_with
751
795
 
752
796
  Transforms values of keys using specific operations (i.e. any object that responds to `#call`). Does not mutate itself and you can transform multiple values at once:
@@ -768,7 +812,7 @@ example.transform_with bogus: -> value { value.tr "<>", "" }
768
812
  # {email: "<jd@example.com>"}
769
813
  ----
770
814
 
771
- The original object _will not_ be mutated:
815
+ The original object _is not_ mutated:
772
816
 
773
817
  [source,ruby]
774
818
  ----
@@ -796,7 +840,7 @@ example.transform_with! bogus: -> value { value.tr "<>", "" }
796
840
  # {email: "<jd@example.com>"}
797
841
  ----
798
842
 
799
- The original object _will be_ mutated:
843
+ The original object _is_ mutated:
800
844
 
801
845
  [source,ruby]
802
846
  ----
@@ -19,7 +19,7 @@ module Refinements
19
19
 
20
20
  def excluding(*elements) = self - elements.flatten
21
21
 
22
- def filter_find(&block) = block ? lazy.map(&block).find(&:itself) : lazy
22
+ def filter_find(&) = block_given? ? lazy.map(&).find(&:itself) : lazy
23
23
 
24
24
  def including(*elements) = self + elements.flatten
25
25
 
@@ -80,9 +80,15 @@ module Refinements
80
80
 
81
81
  def symbolize_keys! = transform_keys!(&:to_sym)
82
82
 
83
- def transform_with(operations) = dup.transform_with! operations
83
+ def transform_value(key, &) = dup.transform_value!(key, &)
84
84
 
85
- def transform_with! operations
85
+ def transform_value! key
86
+ block_given? && key?(key) ? merge!(key => yield(self[key])) : self
87
+ end
88
+
89
+ def transform_with(**) = dup.transform_with!(**)
90
+
91
+ def transform_with!(**operations)
86
92
  operations.each { |key, function| self[key] = function.call self[key] if key? key }
87
93
  self
88
94
  end
@@ -53,14 +53,14 @@ module Refinements
53
53
  def delete_suffix(pattern) = parent.join %(#{name.sub(/#{pattern}\z/, "")}#{extname})
54
54
 
55
55
  def directories pattern = "*", flag: File::FNM_SYSCASE
56
- glob(pattern, flag).select(&:directory?).sort
56
+ glob(pattern, flag).select(&:directory?)
57
57
  end
58
58
 
59
59
  def empty = file? ? (truncate(0) and self) : remove_tree.make_dir
60
60
 
61
61
  def extensions = basename.to_s.split(/(?=\.)+/).tap(&:shift)
62
62
 
63
- def files(pattern = "*", flag: File::FNM_SYSCASE) = glob(pattern, flag).select(&:file?).sort
63
+ def files(pattern = "*", flag: File::FNM_SYSCASE) = glob(pattern, flag).select(&:file?)
64
64
 
65
65
  def gsub(pattern, replacement) = self.class.new(to_s.gsub(pattern, replacement))
66
66
 
data/refinements.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "refinements"
5
- spec.version = "12.8.0"
5
+ spec.version = "12.9.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://alchemists.io/projects/refinements"
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: refinements
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.8.0
4
+ version: 12.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -35,7 +35,7 @@ cert_chain:
35
35
  3n5C8/6Zh9DYTkpcwPSuIfAga6wf4nXc9m6JAw8AuMLaiWN/r/2s4zJsUHYERJEu
36
36
  gZGm4JqtuSg8pYjPeIJxS960owq+SfuC+jxqmRA54BisFCv/0VOJi7tiJVY=
37
37
  -----END CERTIFICATE-----
38
- date: 2024-09-01 00:00:00.000000000 Z
38
+ date: 2024-10-01 00:00:00.000000000 Z
39
39
  dependencies: []
40
40
  description:
41
41
  email:
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  requirements: []
99
- rubygems_version: 3.5.18
99
+ rubygems_version: 3.5.20
100
100
  signing_key:
101
101
  specification_version: 4
102
102
  summary: A collection of core object refinements.
metadata.gz.sig CHANGED
Binary file