refinements 7.10.0 → 7.11.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.adoc +67 -1
- data/lib/refinements.rb +1 -0
- data/lib/refinements/identity.rb +1 -1
- data/lib/refinements/ios.rb +35 -0
- metadata +3 -2
- 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: a5a299dfa7a3355d5cb068cc6638ed41ca9ac4980ed69f6aabb0e1608cc96e95
|
|
4
|
+
data.tar.gz: 4b12b5237fc97f5609677b8f010156ef9a1d00d5004fe48d1cfa4d32df15f602
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 248e66b7141e5e29f68c60aae0a3eac49934830053e9e5ce7082b0164e63b42ee9c536d8b46d4f86c7f570a85f1838415939b5955d66bd93f5df2eeefe66a5d7
|
|
7
|
+
data.tar.gz: 399fc17b0857236d4d58668857d690ddb63deba8fd9de10c372f2d3618c93edb31a9574f166c01d6aee884d4d856f067dfc2b68eddedb80d90d70a656595d82d
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data.tar.gz.sig
CHANGED
|
Binary file
|
data/README.adoc
CHANGED
|
@@ -22,6 +22,7 @@ Enhances the following objects:
|
|
|
22
22
|
* DateTime
|
|
23
23
|
* File
|
|
24
24
|
* Hash
|
|
25
|
+
* IO
|
|
25
26
|
* Pathname
|
|
26
27
|
* String
|
|
27
28
|
* StringIO
|
|
@@ -79,7 +80,7 @@ If all refinements are not desired, add the following to your `+Gemfile+` instea
|
|
|
79
80
|
gem "refinements", require: false
|
|
80
81
|
----
|
|
81
82
|
|
|
82
|
-
|
|
83
|
+
...then require the specific refinement, as needed. Example:
|
|
83
84
|
|
|
84
85
|
[source,ruby]
|
|
85
86
|
----
|
|
@@ -88,6 +89,7 @@ require "refinements/big_decimals"
|
|
|
88
89
|
require "refinements/date_times"
|
|
89
90
|
require "refinements/files"
|
|
90
91
|
require "refinements/hashes"
|
|
92
|
+
require "refinements/ios"
|
|
91
93
|
require "refinements/pathnames"
|
|
92
94
|
require "refinements/strings"
|
|
93
95
|
require "refinements/string_ios"
|
|
@@ -106,6 +108,7 @@ class Example
|
|
|
106
108
|
using Refinements::DateTimes
|
|
107
109
|
using Refinements::Files
|
|
108
110
|
using Refinements::Hashes
|
|
111
|
+
using Refinements::IOs
|
|
109
112
|
using Refinements::Pathnames
|
|
110
113
|
using Refinements::Strings
|
|
111
114
|
using Refinements::StringIOs
|
|
@@ -463,6 +466,69 @@ example = {unit: "221B", street: "Baker Street", city: "London", country: "UK"}
|
|
|
463
466
|
example.use { |unit, street| "#{unit} #{street}" } # => "221B Baker Street"
|
|
464
467
|
----
|
|
465
468
|
|
|
469
|
+
==== IO
|
|
470
|
+
|
|
471
|
+
===== .void
|
|
472
|
+
|
|
473
|
+
Answers an IO stream which points to `/dev/null` in order to ignore any reads or writes to the
|
|
474
|
+
stream. When given a block, the stream will automatically close upon block exit. When not given a
|
|
475
|
+
block, you'll need to close the stream manually.
|
|
476
|
+
|
|
477
|
+
[source,ruby]
|
|
478
|
+
----
|
|
479
|
+
io = IO.void
|
|
480
|
+
io.closed? # => false
|
|
481
|
+
|
|
482
|
+
io = IO.void { |void| void.write "nevermore" }
|
|
483
|
+
io.closed? # => true
|
|
484
|
+
----
|
|
485
|
+
|
|
486
|
+
===== #squelch
|
|
487
|
+
|
|
488
|
+
Temporarily ignores any reads/writes for current stream for all code executed within the block. When
|
|
489
|
+
not given a block, it answers itself.
|
|
490
|
+
|
|
491
|
+
[source,ruby]
|
|
492
|
+
----
|
|
493
|
+
io = IO.new IO.sysopen(Pathname("test.txt").to_s, "w+")
|
|
494
|
+
io.squelch { io.write "Test" }
|
|
495
|
+
io.reread # => ""
|
|
496
|
+
----
|
|
497
|
+
|
|
498
|
+
===== #redirect
|
|
499
|
+
|
|
500
|
+
Redirects current stream to other stream when given a block. Without a block, the original stream is
|
|
501
|
+
answered instead.
|
|
502
|
+
|
|
503
|
+
[source,ruby]
|
|
504
|
+
----
|
|
505
|
+
io = IO.new IO.sysopen(Pathname("test.txt").to_s, "w+")
|
|
506
|
+
other = IO.new IO.sysopen(Pathname("other.txt").to_s, "w+")
|
|
507
|
+
|
|
508
|
+
io.redirect other # => `io`
|
|
509
|
+
|
|
510
|
+
io.redirect(other) { |stream| stream.write "test" }
|
|
511
|
+
.close # => ""
|
|
512
|
+
other.close # => "test"
|
|
513
|
+
----
|
|
514
|
+
|
|
515
|
+
===== #reread
|
|
516
|
+
|
|
517
|
+
Answers full stream by rewinding to beginning of stream and reading all content.
|
|
518
|
+
|
|
519
|
+
[source,ruby]
|
|
520
|
+
----
|
|
521
|
+
io = IO.new IO.sysopen(Pathname("test.txt").to_s, "w+")
|
|
522
|
+
io.write "This is a test."
|
|
523
|
+
|
|
524
|
+
io.reread # => "This is a test."
|
|
525
|
+
io.reread 4 # => "This"
|
|
526
|
+
|
|
527
|
+
buffer = "".dup
|
|
528
|
+
io.reread(buffer: buffer)
|
|
529
|
+
buffer # => "This is a test."
|
|
530
|
+
----
|
|
531
|
+
|
|
466
532
|
==== Pathname
|
|
467
533
|
|
|
468
534
|
===== Pathname
|
data/lib/refinements.rb
CHANGED
data/lib/refinements/identity.rb
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Refinements
|
|
4
|
+
module IOs
|
|
5
|
+
refine IO.singleton_class do
|
|
6
|
+
def void
|
|
7
|
+
new(sysopen("/dev/null", "w+")).then do |io|
|
|
8
|
+
return io unless block_given?
|
|
9
|
+
|
|
10
|
+
yield io
|
|
11
|
+
io.tap(&:close)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
refine IO do
|
|
17
|
+
def squelch &block
|
|
18
|
+
self.class.void.then { |void| redirect(void, &block) }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def redirect other
|
|
22
|
+
return self unless block_given?
|
|
23
|
+
|
|
24
|
+
backup = dup
|
|
25
|
+
reopen other
|
|
26
|
+
yield self
|
|
27
|
+
reopen backup
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def reread length = nil, buffer: nil
|
|
31
|
+
tap(&:rewind).read length, buffer
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
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.
|
|
4
|
+
version: 7.11.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brooke Kuhlmann
|
|
@@ -28,7 +28,7 @@ cert_chain:
|
|
|
28
28
|
2XV8FRa7/JimI07sPLC13eLY3xd/aYTi85Z782KIA4j0G8XEEWAX0ouBhlXPocZv
|
|
29
29
|
QWc=
|
|
30
30
|
-----END CERTIFICATE-----
|
|
31
|
-
date: 2020-
|
|
31
|
+
date: 2020-10-06 00:00:00.000000000 Z
|
|
32
32
|
dependencies:
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
34
|
name: bundler-audit
|
|
@@ -244,6 +244,7 @@ files:
|
|
|
244
244
|
- lib/refinements/files.rb
|
|
245
245
|
- lib/refinements/hashes.rb
|
|
246
246
|
- lib/refinements/identity.rb
|
|
247
|
+
- lib/refinements/ios.rb
|
|
247
248
|
- lib/refinements/pathnames.rb
|
|
248
249
|
- lib/refinements/string_ios.rb
|
|
249
250
|
- lib/refinements/strings.rb
|
metadata.gz.sig
CHANGED
|
Binary file
|