refinements 9.5.0 → 9.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.adoc +72 -0
- data/lib/refinements/arrays.rb +2 -0
- data/lib/refinements/ios.rb +4 -2
- data/lib/refinements/log_devices.rb +21 -0
- data/lib/refinements/loggers.rb +14 -0
- data/lib/refinements/shared/ios/reread.rb +12 -0
- data/lib/refinements/string_ios.rb +2 -1
- data/lib/refinements.rb +2 -0
- data/refinements.gemspec +1 -1
- data.tar.gz.sig +0 -0
- metadata +6 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c0144180dd3a5cabe861b385cd0c766eaf54280ca6812dc6e82db4e564ce6c0
|
4
|
+
data.tar.gz: b339710c168c98fffbe5b1994031f033041c9f6c16b0df96555cb80fd5cd7269
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 926090205f29ac111494e00e7de37b59b8549c6f979c8a0d62d852e9d87193093073ac0f005564243fc472eacf4de68f62bea8b1d45f3f363e113805758f726d
|
7
|
+
data.tar.gz: 22a524d073a48922d6347119f01f4c059bbd2bba8f65a2e6573951b137b772dc3f7797a3596ccb850bb63159a9b2ab501bb334f7ac8a80f66ca93f55886bdb09
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/README.adoc
CHANGED
@@ -21,6 +21,8 @@ Enhances the following objects:
|
|
21
21
|
* DateTime
|
22
22
|
* Hash
|
23
23
|
* IO
|
24
|
+
* LogDevice
|
25
|
+
* Logger
|
24
26
|
* Pathname
|
25
27
|
* String
|
26
28
|
* StringIO
|
@@ -73,6 +75,8 @@ require "refinements/strings"
|
|
73
75
|
require "refinements/string_ios"
|
74
76
|
require "refinements/structs"
|
75
77
|
require "refinements/symbols"
|
78
|
+
require "refinements/log_devices"
|
79
|
+
require "refinements/loggers"
|
76
80
|
----
|
77
81
|
|
78
82
|
=== Using
|
@@ -93,6 +97,8 @@ class Example
|
|
93
97
|
using Refinements::StringIOs
|
94
98
|
using Refinements::Structs
|
95
99
|
using Refinements::Symbols
|
100
|
+
using Refinements::LogDevices
|
101
|
+
using Refinements::Loggers
|
96
102
|
end
|
97
103
|
----
|
98
104
|
|
@@ -102,6 +108,24 @@ The following sections demonstrate how each refinement enriches your objects wit
|
|
102
108
|
|
103
109
|
==== Array
|
104
110
|
|
111
|
+
===== #combinatorial?
|
112
|
+
|
113
|
+
Answers if an array is equal to another array when the elements are equal but in any order and/or subset.
|
114
|
+
|
115
|
+
[source,ruby]
|
116
|
+
----
|
117
|
+
example = %w[a b c]
|
118
|
+
|
119
|
+
example.combinatorial? %w[a b c] # true
|
120
|
+
example.combinatorial? %w[c a b] # true
|
121
|
+
example.combinatorial? %w[c] # true
|
122
|
+
example.combinatorial? %w[c b] # true
|
123
|
+
example.combinatorial? %w[x] # false
|
124
|
+
example.combinatorial? %w[z b c] # false
|
125
|
+
example.combinatorial? %w[a b c d] # false
|
126
|
+
example.combinatorial? [] # false
|
127
|
+
----
|
128
|
+
|
105
129
|
===== #compress
|
106
130
|
|
107
131
|
Removes `nil` and empty objects without mutating itself.
|
@@ -596,6 +620,54 @@ io.squelch { io.write "Test" } # "#<IO:fd 20>"
|
|
596
620
|
io.reread # ""
|
597
621
|
----
|
598
622
|
|
623
|
+
==== LogDevice
|
624
|
+
|
625
|
+
===== #reread
|
626
|
+
|
627
|
+
Answers previously written content by rewinding to beginning of device.
|
628
|
+
|
629
|
+
[source,ruby]
|
630
|
+
----
|
631
|
+
# With File.
|
632
|
+
device = Logger::LogDevice.new "test.log"
|
633
|
+
device.write "Test."
|
634
|
+
device.reread # "Test."
|
635
|
+
|
636
|
+
# With StringIO.
|
637
|
+
device = Logger::LogDevice.new StringIO.new
|
638
|
+
device.write "Test."
|
639
|
+
device.reread # "Test."
|
640
|
+
|
641
|
+
# With STDOUT.
|
642
|
+
device = Logger::LogDevice.new $stdout
|
643
|
+
device.write "Test."
|
644
|
+
device.reread # ""
|
645
|
+
----
|
646
|
+
|
647
|
+
==== Logger
|
648
|
+
|
649
|
+
===== #reread
|
650
|
+
|
651
|
+
Answers previously written content by rewinding to beginning of log.
|
652
|
+
|
653
|
+
[source,ruby]
|
654
|
+
----
|
655
|
+
# With File.
|
656
|
+
logger = Logger.new "test.log"
|
657
|
+
logger.write "Test."
|
658
|
+
logger.reread # "Test."
|
659
|
+
|
660
|
+
# With StringIO.
|
661
|
+
logger = Logger.new StringIO.new
|
662
|
+
logger.write "Test."
|
663
|
+
logger.reread # "Test."
|
664
|
+
|
665
|
+
# With STDOUT.
|
666
|
+
logger = Logger.new $stdout
|
667
|
+
logger.write "Test."
|
668
|
+
logger.reread # ""
|
669
|
+
----
|
670
|
+
|
599
671
|
==== Pathname
|
600
672
|
|
601
673
|
===== Pathname
|
data/lib/refinements/arrays.rb
CHANGED
data/lib/refinements/ios.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "refinements/shared/ios/reread"
|
4
|
+
|
3
5
|
module Refinements
|
4
6
|
# Provides additional enhancements to the IO primitive.
|
5
7
|
module IOs
|
@@ -15,6 +17,8 @@ module Refinements
|
|
15
17
|
end
|
16
18
|
|
17
19
|
refine IO do
|
20
|
+
import_methods Shared::IOs::Reread
|
21
|
+
|
18
22
|
def redirect other
|
19
23
|
return self unless block_given?
|
20
24
|
|
@@ -24,8 +28,6 @@ module Refinements
|
|
24
28
|
reopen backup
|
25
29
|
end
|
26
30
|
|
27
|
-
def reread(length = nil, buffer: nil) = tap(&:rewind).read(length, buffer)
|
28
|
-
|
29
31
|
def squelch(&) = self.class.void.then { |void| redirect(void, &) }
|
30
32
|
end
|
31
33
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "logger"
|
4
|
+
require "refinements/string_ios"
|
5
|
+
|
6
|
+
module Refinements
|
7
|
+
# Provides additional enhancements to a log device.
|
8
|
+
module LogDevices
|
9
|
+
using StringIOs
|
10
|
+
|
11
|
+
refine Logger::LogDevice do
|
12
|
+
def reread
|
13
|
+
case dev
|
14
|
+
when File then dev.class.new(dev).read
|
15
|
+
when StringIO then dev.reread
|
16
|
+
else ""
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Refinements
|
4
|
+
module Shared
|
5
|
+
module IOs
|
6
|
+
# Provides shared functionality for I/O object rewinding.
|
7
|
+
module Reread
|
8
|
+
def reread(length = nil, buffer: nil) = tap(&:rewind).read(length, buffer)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -1,12 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "stringio"
|
4
|
+
require "refinements/shared/ios/reread"
|
4
5
|
|
5
6
|
module Refinements
|
6
7
|
# Provides additional enhancements to the StringIO primitive.
|
7
8
|
module StringIOs
|
8
9
|
refine StringIO do
|
9
|
-
|
10
|
+
import_methods Shared::IOs::Reread
|
10
11
|
end
|
11
12
|
end
|
12
13
|
end
|
data/lib/refinements.rb
CHANGED
data/refinements.gemspec
CHANGED
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: 9.
|
4
|
+
version: 9.6.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-
|
31
|
+
date: 2022-07-17 00:00:00.000000000 Z
|
32
32
|
dependencies: []
|
33
33
|
description:
|
34
34
|
email:
|
@@ -47,8 +47,11 @@ files:
|
|
47
47
|
- lib/refinements/date_times.rb
|
48
48
|
- lib/refinements/hashes.rb
|
49
49
|
- lib/refinements/ios.rb
|
50
|
+
- lib/refinements/log_devices.rb
|
51
|
+
- lib/refinements/loggers.rb
|
50
52
|
- lib/refinements/pathnames.rb
|
51
53
|
- lib/refinements/shared/enumerables/many.rb
|
54
|
+
- lib/refinements/shared/ios/reread.rb
|
52
55
|
- lib/refinements/string_ios.rb
|
53
56
|
- lib/refinements/strings.rb
|
54
57
|
- lib/refinements/structs.rb
|
@@ -80,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
83
|
- !ruby/object:Gem::Version
|
81
84
|
version: '0'
|
82
85
|
requirements: []
|
83
|
-
rubygems_version: 3.3.
|
86
|
+
rubygems_version: 3.3.18
|
84
87
|
signing_key:
|
85
88
|
specification_version: 4
|
86
89
|
summary: A collection of refinements to core Ruby objects.
|
metadata.gz.sig
CHANGED
Binary file
|