refinements 12.7.1 → 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: 81242c43b3aad6b04319273228ac9a83e1dde30677f95bafe56629552e9a2aff
4
- data.tar.gz: 350fbedab3dba89b6506b73b1ee1eb029d0fab302d347caddccfb53af865bc8b
3
+ metadata.gz: 229ada32a4378800013462184db88be59d33109cbbd63c8c6378add52fc7b321
4
+ data.tar.gz: 4f0291390f858b45e2066dc9eac5e3f06ceef5c9e1051160aa7c625e734c78c4
5
5
  SHA512:
6
- metadata.gz: 3b52ff2d707ddca982386b1f65d49f21a080faa3f5985adead49c3c15c3bed2ebc4c5587c0bedbbe2fcc3a0b80e97946c5b895fb365d39eeeabf02922b0388a0
7
- data.tar.gz: f7eaf17a912a7ddfdf05117da9a13f0bd699aae9238f6df8e8dcc26f963f431781710a20f39775162547c44fe847d04edd6304da3bbaea90412e74db35f2c72f
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
  ----
@@ -1524,6 +1568,32 @@ io.reread(buffer:) # "This is a test."
1524
1568
  buffer # "This is a test."
1525
1569
  ----
1526
1570
 
1571
+ ===== #to_s
1572
+
1573
+ Answers underlying string representation for _explicit_ conversion.
1574
+
1575
+ [source,ruby]
1576
+ ----
1577
+ io = StringIO.new
1578
+ io.write "One"
1579
+ io.write ", "
1580
+ io.write "Two."
1581
+ io.to_s # "One, Two."
1582
+ ----
1583
+
1584
+ ===== #to_str
1585
+
1586
+ Answers underlying string representation for _implicit_ conversion.
1587
+
1588
+ [source,ruby]
1589
+ ----
1590
+ io = StringIO.new
1591
+ io.write "One"
1592
+ io.write ", "
1593
+ io.write "Two."
1594
+ io.to_str # "One, Two."
1595
+ ----
1596
+
1527
1597
  ==== Struct
1528
1598
 
1529
1599
  ===== .with_positions
@@ -1730,6 +1800,8 @@ bin/rake
1730
1800
 
1731
1801
  == link:https://alchemists.io/policies/contributions[Contributions]
1732
1802
 
1803
+ == link:https://alchemists.io/policies/developer_certificate_of_origin[Developer Certificate of Origin]
1804
+
1733
1805
  == link:https://alchemists.io/projects/refinements/versions[Versions]
1734
1806
 
1735
1807
  == link:https://alchemists.io/community[Community]
@@ -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
 
@@ -8,6 +8,9 @@ module Refinements
8
8
  module StringIO
9
9
  refine ::StringIO do
10
10
  import_methods Shared::Reread
11
+
12
+ alias_method :to_s, :string
13
+ alias_method :to_str, :string
11
14
  end
12
15
  end
13
16
  end
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.7.1"
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"
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.metadata = {
13
13
  "bug_tracker_uri" => "https://github.com/bkuhlmann/refinements/issues",
14
14
  "changelog_uri" => "https://alchemists.io/projects/refinements/versions",
15
- "documentation_uri" => "https://alchemists.io/projects/refinements",
15
+ "homepage_uri" => "https://alchemists.io/projects/refinements",
16
16
  "funding_uri" => "https://github.com/sponsors/bkuhlmann",
17
17
  "label" => "Refinements",
18
18
  "rubygems_mfa_required" => "true",
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.signing_key = Gem.default_key_path
23
23
  spec.cert_chain = [Gem.default_cert_path]
24
24
 
25
- spec.required_ruby_version = "~> 3.3"
25
+ spec.required_ruby_version = ">= 3.3", "<= 3.4"
26
26
 
27
27
  spec.files = Dir["*.gemspec", "lib/**/*"]
28
28
  spec.extra_rdoc_files = Dir["README*", "LICENSE*"]
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.7.1
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-08-03 00:00:00.000000000 Z
38
+ date: 2024-10-01 00:00:00.000000000 Z
39
39
  dependencies: []
40
40
  description:
41
41
  email:
@@ -73,7 +73,7 @@ licenses:
73
73
  metadata:
74
74
  bug_tracker_uri: https://github.com/bkuhlmann/refinements/issues
75
75
  changelog_uri: https://alchemists.io/projects/refinements/versions
76
- documentation_uri: https://alchemists.io/projects/refinements
76
+ homepage_uri: https://alchemists.io/projects/refinements
77
77
  funding_uri: https://github.com/sponsors/bkuhlmann
78
78
  label: Refinements
79
79
  rubygems_mfa_required: 'true'
@@ -84,16 +84,19 @@ require_paths:
84
84
  - lib
85
85
  required_ruby_version: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '3.3'
90
+ - - "<="
91
+ - !ruby/object:Gem::Version
92
+ version: '3.4'
90
93
  required_rubygems_version: !ruby/object:Gem::Requirement
91
94
  requirements:
92
95
  - - ">="
93
96
  - !ruby/object:Gem::Version
94
97
  version: '0'
95
98
  requirements: []
96
- rubygems_version: 3.5.17
99
+ rubygems_version: 3.5.20
97
100
  signing_key:
98
101
  specification_version: 4
99
102
  summary: A collection of core object refinements.
metadata.gz.sig CHANGED
Binary file