refinements 9.3.2 → 9.5.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: 1944163ba2c01a7e4f8426eb4f51f0a69f03a5cbfc917481f0737eade97606f8
4
- data.tar.gz: 507ace61bb505e081844540f9a1c55613ae380f3dd24ae55bbaced230ac33b74
3
+ metadata.gz: 06c161de8cf1a100c8df6267ef2116368743557dac4504e9617b19dd063520aa
4
+ data.tar.gz: 60389a48bc41a581d835ac67c80e71a8db438ddbccf070336e1128d4d430e87a
5
5
  SHA512:
6
- metadata.gz: 921398ebe01062ee06c620a8ec317e8675bac9e75a71db95ce93af132968f807cd36387437d5ae3f4b33635137f618577972dd813fdafcb122e2dfcc941d58f5
7
- data.tar.gz: 26b54641a9809e34890fff971f343322abb543f4566af35df2f11724ac6520d9f93833e6959c23191e2ec5279c0123953c6c133d4b80f5a89ede48cd0aef7bda
6
+ metadata.gz: 95c680f9fe5df9820d72462e40984eafe398b0cf81589b6525026978a477950723608d8d39b89b3fe0c61e888ce3a2a166d2e54ec26676a3c9621f6b712e3828
7
+ data.tar.gz: b3743029174a74733328346ce1264d9f7dab9876222deb4a3b3f96a38817cf8b7c0b35eabc62639b5f7e7f4f2e1572282d1f31952e6c55b90d6f65df2b190bef
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -254,6 +254,21 @@ example.ring { |(before, current, after)| puts "#{before} #{current} #{after}" }
254
254
  # [2 3 1]
255
255
  ----
256
256
 
257
+ ===== #to_sentence
258
+
259
+ Answers a sentence using `", "` as the default delimiter and `"and"` as the default conjunction.
260
+ Useful when building documentation, answering human readable error messages, etc.
261
+
262
+ [source,ruby]
263
+ ----
264
+ [].to_sentence # ""
265
+ ["test"].to_sentence # "test"
266
+ ["a", :b].to_sentence # "a and b"
267
+ [1, "a", :b, 2.0, /\w+/].map(&:inspect).to_sentence # 1, "a", :b, 2.0, and /\w+/
268
+ %w[one two three].to_sentence # "one, two, and three"
269
+ %w[eins zwei drei].to_sentence delimiter: " ", conjunction: "und" # "eins zwei und drei"
270
+ ----
271
+
257
272
  ==== Big Decimal
258
273
 
259
274
  ===== #inspect
@@ -32,6 +32,14 @@ module Refinements
32
32
  def pad(value, max: size) = dup.fill(value, size..(max - 1))
33
33
 
34
34
  def ring(&) = [last, *self, first].each_cons(3, &)
35
+
36
+ def to_sentence delimiter: ", ", conjunction: "and"
37
+ case length
38
+ when (3..) then "#{self[..-2].join delimiter}#{delimiter}#{conjunction} #{last}"
39
+ when 2 then join " #{conjunction} "
40
+ else join
41
+ end
42
+ end
35
43
  end
36
44
  end
37
45
  end
@@ -21,7 +21,8 @@ module Refinements
21
21
  def compress!
22
22
  return self if empty?
23
23
 
24
- compact!.delete_if { |_key, value| value.respond_to?(:empty?) && value.empty? }
24
+ compact!
25
+ delete_if { |_key, value| value.respond_to?(:empty?) && value.empty? }
25
26
  end
26
27
 
27
28
  def deep_merge other
@@ -14,7 +14,7 @@ module Refinements
14
14
  end
15
15
 
16
16
  refine Pathname.singleton_class do
17
- def home = new(ENV["HOME"])
17
+ def home = new ENV.fetch("HOME", "")
18
18
 
19
19
  def make_temp_dir prefix: "temp-", suffix: nil, root: nil
20
20
  if block_given?
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 = "9.3.2"
5
+ spec.version = "9.5.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://www.alchemists.io/projects/refinements"
@@ -13,6 +13,7 @@ Gem::Specification.new do |spec|
13
13
  "bug_tracker_uri" => "https://github.com/bkuhlmann/refinements/issues",
14
14
  "changelog_uri" => "https://www.alchemists.io/projects/refinements/versions",
15
15
  "documentation_uri" => "https://www.alchemists.io/projects/refinements",
16
+ "funding_uri" => "https://github.com/sponsors/bkuhlmann",
16
17
  "label" => "Refinements",
17
18
  "rubygems_mfa_required" => "true",
18
19
  "source_code_uri" => "https://github.com/bkuhlmann/refinements"
data.tar.gz.sig CHANGED
@@ -1,3 +1 @@
1
- 4��D�
2
- a��
3
- �P ��k�a� �4�7y��˅\_�5)}�+]�/�]r��ΰ�/ǯԵ>Ihٝ����$�̰.�ْ���ʬn��4G��A�m݄aA�Hl�b��$���9�,�EjR���7NV()!dx2#�H��|���)Ҕ؝'Yk�Uɉhn��*
1
+ 7[�%�";\�EP **sO6��Eg���mӛũ�?�����]]���97����ѕh�<?$C؇\�� >���o���b��[��(�/�q�+�M%�O-�/]`��h�(������s� �ɺ�Z֯D��S/�Ҋ�j�x���d��"Ν_7}8�_�������w�,г�G�Y_R�ݼ��C� ��0,' ���F����s�P�� ��´��Z�_�9�v��5�&�6����#,��Ҝ��
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: 9.3.2
4
+ version: 9.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -28,7 +28,7 @@ cert_chain:
28
28
  CxDe2+VuChj4I1nvIHdu+E6XoEVlanUPKmSg6nddhkKn2gC45Kyzh6FZqnzH/CRp
29
29
  RFE=
30
30
  -----END CERTIFICATE-----
31
- date: 2022-04-09 00:00:00.000000000 Z
31
+ date: 2022-06-25 00:00:00.000000000 Z
32
32
  dependencies: []
33
33
  description:
34
34
  email:
@@ -61,6 +61,7 @@ metadata:
61
61
  bug_tracker_uri: https://github.com/bkuhlmann/refinements/issues
62
62
  changelog_uri: https://www.alchemists.io/projects/refinements/versions
63
63
  documentation_uri: https://www.alchemists.io/projects/refinements
64
+ funding_uri: https://github.com/sponsors/bkuhlmann
64
65
  label: Refinements
65
66
  rubygems_mfa_required: 'true'
66
67
  source_code_uri: https://github.com/bkuhlmann/refinements
@@ -79,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
80
  - !ruby/object:Gem::Version
80
81
  version: '0'
81
82
  requirements: []
82
- rubygems_version: 3.3.11
83
+ rubygems_version: 3.3.16
83
84
  signing_key:
84
85
  specification_version: 4
85
86
  summary: A collection of refinements to core Ruby objects.
metadata.gz.sig CHANGED
Binary file