refinements 7.10.0 → 7.11.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.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
|