refinements 7.15.1 → 8.0.1

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: c4efd7acd4d8da05214aa7947c0f61f3a04c8ece8733c2bdc4dc48ce9cbad371
4
- data.tar.gz: 5025123a8cc9e8fe23d1a0436e265c173a89477e6b5194a159a1ed9e5cb5ec9c
3
+ metadata.gz: aa3c406709e8a34ba5de77de6416ba4a180a42dc994252fb35b9414a73d941c2
4
+ data.tar.gz: 99426faa5a56f5352ed5620fe4a94e090121c7bd7555ad3c15d0b3a8beee65a1
5
5
  SHA512:
6
- metadata.gz: 48228ed81040b9e9b18f7e743d3cdb64885ea53515de5d588817a8969d6d02781e7404b8a6e33e7f24c70f982c3b3f5fd72b61ceb1c87a5d2c8eb8117e544641
7
- data.tar.gz: 1d0a4c17a13822cea9d33b2dbdc937e1ea34559910821224b41230b1ac5ab4873f55b423d456fde87866befad8494972963f92dcddf188c996a6d04e8488ba2b
6
+ metadata.gz: eeb946bc0824dd153fd3bb4615287b0e088c10693c45bdc728e2ee4f2f75207f079584d357afd3085ff289b3cbae45f1f5e14aeb099c0170e78adc0b6012a6bb
7
+ data.tar.gz: 2fbe37e1cbc1f8c4cc966f7f3d7db70a74481481ecc4c5770053d2b156dfc681e6fd8b2ab1f4432d87daa719a9c6962dd8354a42011ccce61ed7c40d29768d25
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -22,7 +22,6 @@ Enhances the following objects:
22
22
  * Array
23
23
  * BigDecimal
24
24
  * DateTime
25
- * File
26
25
  * Hash
27
26
  * IO
28
27
  * Pathname
@@ -70,7 +69,6 @@ gem "refinements", require: false
70
69
  require "refinements/arrays"
71
70
  require "refinements/big_decimals"
72
71
  require "refinements/date_times"
73
- require "refinements/files"
74
72
  require "refinements/hashes"
75
73
  require "refinements/ios"
76
74
  require "refinements/pathnames"
@@ -90,7 +88,6 @@ class Example
90
88
  using Refinements::Arrays
91
89
  using Refinements::BigDecimals
92
90
  using Refinements::DateTimes
93
- using Refinements::Files
94
91
  using Refinements::Hashes
95
92
  using Refinements::IOs
96
93
  using Refinements::Pathnames
@@ -171,6 +168,18 @@ Answers mean/average all elements within an array.
171
168
  [1.25, 1.5, 1.75].mean # => 1.5
172
169
  ----
173
170
 
171
+ ===== #pad
172
+
173
+ Answers new array padded with given value up to a maximum size. Useful in situations where an array
174
+ needs to be a specific size with padded values.
175
+
176
+ [source,ruby]
177
+ ----
178
+ [1].pad 0 # => [1]
179
+ [1].pad 0, max: 3 # => [1, 0, 0]
180
+ [1, 2].pad 3, max: 3 # => [1, 2, 3]
181
+ ----
182
+
174
183
  ===== #ring
175
184
 
176
185
  Answers a circular array which can enumerate before, current, after elements.
@@ -208,18 +217,6 @@ Answers new DateTime object for current UTC date/time.
208
217
  DateTime.utc # => #<DateTime: 2019-12-31T18:17:00+00:00 ((2458849j,65820s,181867000n),+0s,2299161j)>
209
218
  ----
210
219
 
211
- ==== File
212
-
213
- ===== .rewrite
214
-
215
- When given a file path and a block, it provides the contents of the recently read file for
216
- manipulation and immediate writing back to the same file.
217
-
218
- [source,ruby]
219
- ----
220
- File.rewrite("/test.txt") { |content| content.gsub "[placeholder]", "example" }
221
- ----
222
-
223
220
  ==== Hash
224
221
 
225
222
  ===== .infinite
@@ -312,28 +309,6 @@ example.deep_symbolize_keys! # => {a: {b: 1}}
312
309
  example # => {a: {b: 1}}
313
310
  ----
314
311
 
315
- ===== #except
316
-
317
- Answers new hash with given keys removed without mutating itself.
318
-
319
- [source,ruby]
320
- ----
321
- example = {a: 1, b: 2, c: 3}
322
- example.except :a, :b # => {c: 3}
323
- example # => {a: 1, b: 2, c: 3}
324
- ----
325
-
326
- ===== #except!
327
-
328
- Answers new hash with given keys removed while mutating itself.
329
-
330
- [source,ruby]
331
- ----
332
- example = {a: 1, b: 2, c: 3}
333
- example.except! :a, :b # => {c: 3}
334
- example # => {c: 3}
335
- ----
336
-
337
312
  ===== #flatten_keys
338
313
 
339
314
  Flattens nested keys as top-level keys without mutating itself. Does not handle nested arrays,
@@ -376,50 +351,6 @@ example.recurse(&:symbolize_keys) # => {a: {b: 1}}
376
351
  example.recurse(&:invert) # => {{"b" => 1} => "a"}
377
352
  ----
378
353
 
379
- ===== #rekey
380
-
381
- Transforms keys per mapping (size of mapping can vary) without mutating itself.
382
-
383
- [source,ruby]
384
- ----
385
- example = {a: 1, b: 2, c: 3}
386
- example.rekey a: :amber, b: :blue # => {amber: 1, blue: 2, c: 3}
387
- example # => {a: 1, b: 2, c: 3}
388
- ----
389
-
390
- ===== #rekey!
391
-
392
- Transforms keys per mapping (size of mapping can vary) while mutating itself.
393
-
394
- [source,ruby]
395
- ----
396
- example = {a: 1, b: 2, c: 3}
397
- example.rekey! a: :amber, b: :blue # => {amber: 1, blue: 2, c: 3}
398
- example # => {amber: 1, blue: 2, c: 3}
399
- ----
400
-
401
- ===== #reverse_merge
402
-
403
- Merges calling hash into passed in hash without mutating itself.
404
-
405
- [source,ruby]
406
- ----
407
- example = {a: 1, b: 2}
408
- example.reverse_merge a: 0, c: 3 # => {a: 1, b: 2, c: 3}
409
- example # => {a: 1, b: 2}
410
- ----
411
-
412
- ===== #reverse_merge!
413
-
414
- Merges calling hash into passed in hash while mutating itself.
415
-
416
- [source,ruby]
417
- ----
418
- example = {a: 1, b: 2}
419
- example.reverse_merge! a: 0, c: 3 # => {a: 1, b: 2, c: 3}
420
- example # => {a: 1, b: 2, c: 3}
421
- ----
422
-
423
354
  ===== #stringify_keys
424
355
 
425
356
  Converts keys to strings without mutating itself.
@@ -546,10 +477,79 @@ construct a valid path.
546
477
  Pathname(nil) # => Pathname("")
547
478
  ----
548
479
 
480
+ ===== .home
481
+
482
+ Answers user home directory.
483
+
484
+ [source,ruby]
485
+ ----
486
+ Pathname.home # => Pathname "/Users/bkuhlmann"
487
+ ----
488
+
489
+ ===== .make_temp_dir
490
+
491
+ Wraps `Dir.mktmpdir` with the following behavior (see
492
+ link:https://rubyapi.org/o/Dir.mktmpdir#method-c-mktmpdir[Dir.mktmpdir] for details):
493
+
494
+ * *Without Block* - Answers a newly created Pathname instance which is not automatically cleaned up.
495
+ * *With Block* Yields a Pathname instance, answers result of given block, and automatidally cleans
496
+ up temporary directory after block exits.
497
+
498
+ The following examples use truncated temporary directories for illustration purposes only. In
499
+ reality, these paths will be longer depending on which operating system you are using.
500
+
501
+ [source,ruby]
502
+ ----
503
+ Pathname.make_temp_dir # => Pathname:/var/folders/T/temp-20200101-16940-r8
504
+ Pathname.make_temp_dir prefix: "prefix-" # => Pathname:/var/folders/T/prefix-20200101-16940-r8
505
+ Pathname.make_temp_dir suffix: "-suffix" # => Pathname:/var/folders/T/temp-20200101-16940-r8-suffix
506
+ Pathname.make_temp_dir prefix: "prefix-", suffix: "-suffix" # => Pathname:/var/folders/T/prefix-20200101-16940-r8-suffix
507
+ Pathname.make_temp_dir root: "/example" # => Pathname:/example/temp-20200101-16940-r8
508
+ Pathname.make_temp_dir { "I am a block result" } # => "I am a block result"
509
+ Pathname.make_temp_dir { |path| path.join "sub_dir" } # => Pathname:/var/folders/T/temp-20200101-16940-r8/sub_dir
510
+ ----
511
+
512
+ ===== .require_tree
513
+
514
+ Requires all files in given root path and corresponding nested tree structure. All files are sorted
515
+ before being required to ensure consistent behavior. Example:
516
+
517
+ [source,ruby]
518
+ ----
519
+ # Before
520
+ Dir[File.join(__dir__, "support/shared_contexts/**/*.rb")].sort.each { |path| require path }
521
+
522
+ # After
523
+ Pathname.require_tree __dir__, "support/shared_contexts/**/*.rb"
524
+ ----
525
+
526
+ The following are further examples of potential usage:
527
+
528
+ [source,ruby]
529
+ ----
530
+ # Requires all files in root directory and below.
531
+ Pathname.require_tree __dir__
532
+
533
+ # Requires all files in `/test/**/*.rb` and below.
534
+ Pathname.require_tree "/test"
535
+
536
+ # Requires all files in RSpec shared examples directory structure.
537
+ Pathname.require_tree Bundler.root.join("spec"), "support/shared_examples/**/*.rb"
538
+ ----
539
+
540
+ ===== .root
541
+
542
+ Answers operating system root path.
543
+
544
+ [source,ruby]
545
+ ----
546
+ Pathname.root # => Pathname "/"
547
+ ----
548
+
549
549
  ===== #change_dir
550
550
 
551
- Inherits and wraps `Dir.chdir` behavior by changing to directory of current path. See
552
- link:https://rubyapi.org/2.7/o/s?q=Dir.chdir[Dir.chdir] for details.
551
+ Wraps `Dir.chdir` behavior by changing to directory of current path. See
552
+ link:https://rubyapi.org/o/Dir.chdir#method-c-chdir[Dir.chdir] for details.
553
553
 
554
554
  [source,ruby]
555
555
  ----
@@ -716,8 +716,8 @@ Updates access and modification times for path. Defaults to current time.
716
716
 
717
717
  [source,ruby]
718
718
  ----
719
- Pathname("example.txt").touch # => Pathname("example.txt")
720
- Pathname("example.txt").touch at: Time.now - 1 # => Pathname("example.txt")
719
+ Pathname("example.txt").touch # => Pathname("example.txt")
720
+ Pathname("example.txt").touch Time.now - 1 # => Pathname("example.txt")
721
721
  ----
722
722
 
723
723
  ===== #write
@@ -855,6 +855,50 @@ buffer # => "This is a test."
855
855
 
856
856
  ==== Struct
857
857
 
858
+ ===== .keyworded?
859
+
860
+ Answers whether a struct was constructed with keyword or positional arguments.
861
+
862
+ [source,ruby]
863
+ ----
864
+ Struct.new(:a, keyword_init: true).keyworded? # => true
865
+ Struct.new(:a).keyworded? # => false
866
+ ----
867
+
868
+ ===== .with_keywords
869
+
870
+ Answers a struct instance with given keyword arguments regardless of
871
+ whether the struct was constructed with positional or keyword arguments.
872
+
873
+ [source,ruby]
874
+ ----
875
+ Example = Struct.new :a, :b, :c
876
+ Example.with_keywords a: 1, b: 2, c: 3 # => #<struct a=1, b=2, c=3>
877
+ Example.with_keywords a: 1 # => #<struct a=1, b=nil, c=nil>
878
+ Example.with_keywords c: 1 # => #<struct a=nil, b=nil, c=1>
879
+
880
+ Example = Struct.new :a, :b, :c, keyword_init: true
881
+ Example.with_keywords a: 1, b: 2, c: 3 # => #<struct a=1, b=2, c=3>
882
+ Example.with_keywords a: 1 # => #<struct a=1, b=nil, c=nil>
883
+ Example.with_keywords c: 1 # => #<struct a=nil, b=nil, c=1>
884
+ ----
885
+
886
+ ===== .with_positions
887
+
888
+ Answers a struct instance with given positional arguments regardless of
889
+ whether the struct was constructed with positional or keyword arguments.
890
+
891
+ [source,ruby]
892
+ ----
893
+ Example = Struct.new :a, :b, :c
894
+ Example.with_positions 1, 2, 3 # => #<struct a=1, b=2, c=3>
895
+ Example.with_positions 1 # => #<struct a=1, b=nil, c=nil>
896
+
897
+ Example = Struct.new :a, :b, :c, keyword_init: true
898
+ Example.with_positions 1, 2, 3 # => #<struct a=1, b=2, c=3>
899
+ Example.with_positions 1 # => #<struct a=1, b=nil, c=nil>
900
+ ----
901
+
858
902
  ===== #merge
859
903
 
860
904
  Merges multiple attributes without mutating itself.
@@ -897,6 +941,53 @@ example.merge! a: 10, b: 20, c: 30 # => #<struct a=10, b=20, c=30>
897
941
  example # => #<struct a=10, b=20, c=30>
898
942
  ----
899
943
 
944
+ ===== #revalue
945
+
946
+ Transforms values without mutating itself. An optional hash can be supplied to pinpoint and
947
+ transform specific attributes. In the event that a block isn't supplied, the struct will answer
948
+ itself since there is nothing to operate on. Behavior is the same regardless of whether the struct
949
+ is constructed using positional or keyword arguments. A positional struct is used in the examples
950
+ below but a keyword struct would work too.
951
+
952
+ [source,ruby]
953
+ ----
954
+ Example = Struct.new :a, :b, :c
955
+
956
+ example = Example[1, 2, 3]
957
+ example.revalue { |value| value * 2 } # => #<struct a=2, b=4, c=6>
958
+ example.revalue(c: 2) { |previous, current| previous + current } # => #<struct a=1, b=2, c=5>
959
+ example.revalue c: 2 # => #<struct a=1, b=2, c=3>
960
+ example.revalue # => #<struct a=1, b=2, c=3>
961
+ example # => #<struct a=1, b=2, c=3>
962
+
963
+ ----
964
+
965
+ ===== #revalue!
966
+
967
+ Transforms values while mutating itself. An optional hash can be supplied to pinpoint and transform
968
+ specific attributes. In the event that a block isn't supplied, the struct will answer itself since
969
+ there is nothing to operate on. Behavior is the same regardless of whether the struct is constructed
970
+ using positional or keyword arguments. A positional struct is used in the examples below but a
971
+ keyword struct would work too.
972
+
973
+ [source,ruby]
974
+ ----
975
+ Example = Struct.new :a, :b, :c
976
+
977
+ example = Example[1, 2, 3]
978
+ example.revalue! { |value| value * 2 } # => #<struct a=2, b=4, c=6>
979
+ example # => #<struct a=2, b=4, c=6>
980
+
981
+ example = Example[1, 2, 3]
982
+ example.revalue!(c: 2) { |previous, current| previous + current } # => #<struct a=1, b=2, c=5>
983
+ example # => #<struct a=1, b=2, c=5>
984
+
985
+ example = Example[1, 2, 3]
986
+ example.revalue! c: 2 # => #<struct a=1, b=2, c=3>
987
+ example.revalue! # => #<struct a=1, b=2, c=3>
988
+ example # => #<struct a=1, b=2, c=3>
989
+ ----
990
+
900
991
  == Development
901
992
 
902
993
  To contribute, run:
@@ -4,7 +4,6 @@ require "refinements/identity"
4
4
  require "refinements/arrays"
5
5
  require "refinements/big_decimals"
6
6
  require "refinements/date_times"
7
- require "refinements/files"
8
7
  require "refinements/hashes"
9
8
  require "refinements/ios"
10
9
  require "refinements/pathnames"
@@ -11,20 +11,10 @@ module Refinements
11
11
  replace compress
12
12
  end
13
13
 
14
- def exclude *elements
15
- warn "[DEPRECATION]: #exclude is deprecated, use #excluding instead."
16
- excluding(*elements)
17
- end
18
-
19
14
  def excluding *elements
20
15
  self - elements.flatten
21
16
  end
22
17
 
23
- def include *elements
24
- warn "[DEPRECATION]: #include is deprecated, use #including instead."
25
- including(*elements)
26
- end
27
-
28
18
  def including *elements
29
19
  self + elements.flatten
30
20
  end
@@ -37,6 +27,10 @@ module Refinements
37
27
  size.zero? ? 0 : sum(0) / size
38
28
  end
39
29
 
30
+ def pad value, max: size
31
+ dup.fill value, size..(max - 1)
32
+ end
33
+
40
34
  def ring &block
41
35
  [last, *self, first].each_cons 3, &block
42
36
  end
@@ -45,14 +45,6 @@ module Refinements
45
45
  replace deep_symbolize_keys
46
46
  end
47
47
 
48
- def except *keys
49
- reject { |key, _value| keys.include? key }
50
- end
51
-
52
- def except! *keys
53
- replace except(*keys)
54
- end
55
-
56
48
  # :reek:TooManyStatements
57
49
  def flatten_keys prefix: nil, delimiter: "_", cast: :to_sym
58
50
  fail StandardError, "Unknown cast: #{cast}." unless %i[to_sym to_s].include? cast
@@ -82,26 +74,6 @@ module Refinements
82
74
  end
83
75
  end
84
76
 
85
- def rekey mapping = {}
86
- return self if mapping.empty?
87
-
88
- transform_keys { |key| mapping[key] || key }
89
- end
90
-
91
- def rekey! mapping = {}
92
- replace rekey(mapping)
93
- end
94
-
95
- def reverse_merge other
96
- warn "[DEPRECATION]: #reverse_merge is deprecated, use #merge instead."
97
- merge(other) { |_key, old_value, _new_value| old_value }
98
- end
99
-
100
- def reverse_merge! other
101
- warn "[DEPRECATION]: #reverse_merge! is deprecated, use #merge! instead."
102
- replace reverse_merge(other)
103
- end
104
-
105
77
  def stringify_keys
106
78
  reduce({}) { |hash, (key, value)| hash.merge key.to_s => value }
107
79
  end
@@ -5,7 +5,7 @@ module Refinements
5
5
  module Identity
6
6
  NAME = "refinements"
7
7
  LABEL = "Refinements"
8
- VERSION = "7.15.1"
8
+ VERSION = "8.0.1"
9
9
  VERSION_LABEL = "#{LABEL} #{VERSION}"
10
10
  end
11
11
  end
@@ -12,6 +12,24 @@ module Refinements
12
12
  end
13
13
  end
14
14
 
15
+ refine Pathname.singleton_class do
16
+ def home
17
+ new ENV["HOME"]
18
+ end
19
+
20
+ def make_temp_dir prefix: "temp-", suffix: nil, root: nil
21
+ Dir.mktmpdir([prefix, suffix], root) { |path| block_given? ? yield(new path) : new(path) }
22
+ end
23
+
24
+ def require_tree root, pattern = "**/*.rb"
25
+ new(root).files(pattern).each { |path| require path.to_s }
26
+ end
27
+
28
+ def root
29
+ new "/"
30
+ end
31
+ end
32
+
15
33
  refine Pathname do
16
34
  def change_dir &block
17
35
  block ? Dir.chdir(self, &block) : (Dir.chdir self and self)
@@ -53,10 +71,6 @@ module Refinements
53
71
  self
54
72
  end
55
73
 
56
- def mkdir
57
- exist? ? self : super and self
58
- end
59
-
60
74
  def name
61
75
  basename extname
62
76
  end
@@ -84,7 +98,7 @@ module Refinements
84
98
  read.then { |content| write yield(content) if block_given? }
85
99
  end
86
100
 
87
- def touch at: Time.now
101
+ def touch at = Time.now
88
102
  exist? ? utime(at, at) : write("")
89
103
  self
90
104
  end
@@ -2,14 +2,7 @@
2
2
 
3
3
  module Refinements
4
4
  module Strings
5
- DELIMITERS = %r([a-z][A-Z]|\s*-\s*|\s*/\s*|\s*:+\s*|\s*_\s*|\s+).freeze
6
-
7
- refine String.singleton_class do
8
- def delimiters
9
- warn "[DEPRECATION]: .delimiters is deprecated, use DELIMITERS instead."
10
- DELIMITERS
11
- end
12
- end
5
+ DELIMITERS = %r([a-z][A-Z]|\s*-\s*|\s*/\s*|\s*:+\s*|\s*_\s*|\s+)
13
6
 
14
7
  refine String do
15
8
  def blank?
@@ -2,13 +2,42 @@
2
2
 
3
3
  module Refinements
4
4
  module Structs
5
+ refine Struct.singleton_class do
6
+ def keyworded?
7
+ inspect.include? "keyword_init: true"
8
+ end
9
+
10
+ def with_keywords **arguments
11
+ keyworded? ? new(**arguments) : new.merge!(**arguments)
12
+ end
13
+
14
+ def with_positions *values
15
+ keyworded? ? new(**Hash[members.zip values]) : new(*values)
16
+ end
17
+ end
18
+
5
19
  refine Struct do
6
20
  def merge **attributes
7
- dup.merge! attributes
21
+ dup.merge!(**attributes)
8
22
  end
9
23
 
10
24
  def merge! **attributes
11
- to_h.merge(attributes).each { |key, value| self[key] = value }
25
+ to_h.merge(**attributes).each { |key, value| self[key] = value }
26
+ self
27
+ end
28
+
29
+ def revalue attributes = each_pair
30
+ return self unless block_given?
31
+
32
+ dup.tap do |copy|
33
+ attributes.each { |key, value| copy[key] = yield self[key], value }
34
+ end
35
+ end
36
+
37
+ def revalue! attributes = each_pair
38
+ return self unless block_given?
39
+
40
+ attributes.each { |key, value| self[key] = yield self[key], value }
12
41
  self
13
42
  end
14
43
  end
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: 7.15.1
4
+ version: 8.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -28,218 +28,8 @@ cert_chain:
28
28
  2XV8FRa7/JimI07sPLC13eLY3xd/aYTi85Z782KIA4j0G8XEEWAX0ouBhlXPocZv
29
29
  QWc=
30
30
  -----END CERTIFICATE-----
31
- date: 2020-11-21 00:00:00.000000000 Z
32
- dependencies:
33
- - !ruby/object:Gem::Dependency
34
- name: bundler-audit
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '0.7'
40
- type: :development
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '0.7'
47
- - !ruby/object:Gem::Dependency
48
- name: bundler-leak
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '0.2'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '0.2'
61
- - !ruby/object:Gem::Dependency
62
- name: gemsmith
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '14.8'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '14.8'
75
- - !ruby/object:Gem::Dependency
76
- name: git-lint
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '1.3'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '1.3'
89
- - !ruby/object:Gem::Dependency
90
- name: guard-rspec
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '4.7'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '4.7'
103
- - !ruby/object:Gem::Dependency
104
- name: pry
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '0.13'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '0.13'
117
- - !ruby/object:Gem::Dependency
118
- name: pry-byebug
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '3.9'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '3.9'
131
- - !ruby/object:Gem::Dependency
132
- name: rake
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: '13.0'
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: '13.0'
145
- - !ruby/object:Gem::Dependency
146
- name: reek
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '6.0'
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '6.0'
159
- - !ruby/object:Gem::Dependency
160
- name: rspec
161
- requirement: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - "~>"
164
- - !ruby/object:Gem::Version
165
- version: '3.10'
166
- type: :development
167
- prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - "~>"
171
- - !ruby/object:Gem::Version
172
- version: '3.10'
173
- - !ruby/object:Gem::Dependency
174
- name: rubocop
175
- requirement: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - "~>"
178
- - !ruby/object:Gem::Version
179
- version: '1.3'
180
- type: :development
181
- prerelease: false
182
- version_requirements: !ruby/object:Gem::Requirement
183
- requirements:
184
- - - "~>"
185
- - !ruby/object:Gem::Version
186
- version: '1.3'
187
- - !ruby/object:Gem::Dependency
188
- name: rubocop-performance
189
- requirement: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - "~>"
192
- - !ruby/object:Gem::Version
193
- version: '1.8'
194
- type: :development
195
- prerelease: false
196
- version_requirements: !ruby/object:Gem::Requirement
197
- requirements:
198
- - - "~>"
199
- - !ruby/object:Gem::Version
200
- version: '1.8'
201
- - !ruby/object:Gem::Dependency
202
- name: rubocop-rake
203
- requirement: !ruby/object:Gem::Requirement
204
- requirements:
205
- - - "~>"
206
- - !ruby/object:Gem::Version
207
- version: '0.5'
208
- type: :development
209
- prerelease: false
210
- version_requirements: !ruby/object:Gem::Requirement
211
- requirements:
212
- - - "~>"
213
- - !ruby/object:Gem::Version
214
- version: '0.5'
215
- - !ruby/object:Gem::Dependency
216
- name: rubocop-rspec
217
- requirement: !ruby/object:Gem::Requirement
218
- requirements:
219
- - - "~>"
220
- - !ruby/object:Gem::Version
221
- version: '2.0'
222
- type: :development
223
- prerelease: false
224
- version_requirements: !ruby/object:Gem::Requirement
225
- requirements:
226
- - - "~>"
227
- - !ruby/object:Gem::Version
228
- version: '2.0'
229
- - !ruby/object:Gem::Dependency
230
- name: simplecov
231
- requirement: !ruby/object:Gem::Requirement
232
- requirements:
233
- - - "~>"
234
- - !ruby/object:Gem::Version
235
- version: '0.19'
236
- type: :development
237
- prerelease: false
238
- version_requirements: !ruby/object:Gem::Requirement
239
- requirements:
240
- - - "~>"
241
- - !ruby/object:Gem::Version
242
- version: '0.19'
31
+ date: 2020-12-29 00:00:00.000000000 Z
32
+ dependencies: []
243
33
  description:
244
34
  email:
245
35
  - brooke@alchemists.io
@@ -255,7 +45,6 @@ files:
255
45
  - lib/refinements/arrays.rb
256
46
  - lib/refinements/big_decimals.rb
257
47
  - lib/refinements/date_times.rb
258
- - lib/refinements/files.rb
259
48
  - lib/refinements/hashes.rb
260
49
  - lib/refinements/identity.rb
261
50
  - lib/refinements/ios.rb
@@ -279,14 +68,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
279
68
  requirements:
280
69
  - - "~>"
281
70
  - !ruby/object:Gem::Version
282
- version: '2.7'
71
+ version: '3.0'
283
72
  required_rubygems_version: !ruby/object:Gem::Requirement
284
73
  requirements:
285
74
  - - ">="
286
75
  - !ruby/object:Gem::Version
287
76
  version: '0'
288
77
  requirements: []
289
- rubygems_version: 3.1.4
78
+ rubygems_version: 3.2.3
290
79
  signing_key:
291
80
  specification_version: 4
292
81
  summary: A collection of refinements to core Ruby objects.
metadata.gz.sig CHANGED
Binary file
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Refinements
4
- module Files
5
- refine File.singleton_class do
6
- def rewrite path
7
- warn "[DEPRECATION]: File.rewrite is deprecated, use Pathname#rewrite instead."
8
- read(path).then { |content| write path, yield(content) }
9
- end
10
- end
11
- end
12
- end