tty-reader 0.7.0 → 0.8.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
- data/CHANGELOG.md +8 -0
- data/README.md +1 -0
- data/lib/tty/reader.rb +21 -21
- data/lib/tty/reader/console.rb +5 -5
- data/lib/tty/reader/history.rb +2 -2
- data/lib/tty/reader/key_event.rb +2 -2
- data/lib/tty/reader/keys.rb +15 -15
- data/lib/tty/reader/line.rb +7 -7
- data/lib/tty/reader/mode.rb +1 -1
- data/lib/tty/reader/version.rb +1 -1
- data/lib/tty/reader/win_api.rb +1 -1
- data/lib/tty/reader/win_console.rb +5 -5
- metadata +18 -54
- data/Rakefile +0 -10
- data/benchmarks/speed_read_char.rb +0 -34
- data/benchmarks/speed_read_line.rb +0 -34
- data/bin/console +0 -6
- data/bin/setup +0 -8
- data/examples/keypress.rb +0 -16
- data/examples/keypress_nonblock.rb +0 -17
- data/examples/line.rb +0 -7
- data/examples/multi_prompt.rb +0 -9
- data/examples/multiline.rb +0 -7
- data/examples/noecho.rb +0 -6
- data/examples/shell.rb +0 -12
- data/spec/spec_helper.rb +0 -51
- data/spec/unit/history_spec.rb +0 -177
- data/spec/unit/key_event_spec.rb +0 -102
- data/spec/unit/line_spec.rb +0 -158
- data/spec/unit/publish_keypress_event_spec.rb +0 -109
- data/spec/unit/read_keypress_spec.rb +0 -96
- data/spec/unit/read_line_spec.rb +0 -119
- data/spec/unit/read_multiline_spec.rb +0 -76
- data/spec/unit/subscribe_spec.rb +0 -74
- data/tasks/console.rake +0 -11
- data/tasks/coverage.rake +0 -11
- data/tasks/spec.rake +0 -29
- data/tty-reader.gemspec +0 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f034dd9a1da1468f59ef2cf8c1ef164c5d85991d7aa0d9760eca05558d09978
|
4
|
+
data.tar.gz: '097df714a88a98b2352e202e69c7da48db124a8f637516449676a8647aee31f3'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04cf6b1571693791baadf0f686f320393e17a0bd6b1a51aa61c28a34b20e65cb5a6efcca77a3ef21b0c4e2ff422ce3467cea3285b7c477783a5c91f3b1f08bde
|
7
|
+
data.tar.gz: ef5d9d50c2bad451a4cb326547e979a36bca173c0f02df90c202fc702823bd12c2bed8c47d0b47e16ccd6a9d1b644552d1ecea3f605629afaa0b975ac60d0b2b
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
## [v0.8.0] - 2020-06-28
|
4
|
+
|
5
|
+
### Changed
|
6
|
+
* Change gemspec to load version directly and remove test artefacts
|
7
|
+
* Change to update tty-screen dependency
|
8
|
+
* Change to remove bundler dev dependency and relax wisper version
|
9
|
+
|
3
10
|
## [v0.7.0] - 2019-11-24
|
4
11
|
|
5
12
|
### Added
|
@@ -66,6 +73,7 @@
|
|
66
73
|
|
67
74
|
* Initial implementation and release
|
68
75
|
|
76
|
+
[v0.8.0]: https://github.com/piotrmurach/tty-reader/compare/v0.7.0...v0.8.0
|
69
77
|
[v0.7.0]: https://github.com/piotrmurach/tty-reader/compare/v0.6.0...v0.7.0
|
70
78
|
[v0.6.0]: https://github.com/piotrmurach/tty-reader/compare/v0.5.0...v0.6.0
|
71
79
|
[v0.5.0]: https://github.com/piotrmurach/tty-reader/compare/v0.4.0...v0.5.0
|
data/README.md
CHANGED
data/lib/tty/reader.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "tty-cursor"
|
4
|
+
require "tty-screen"
|
5
|
+
require "wisper"
|
6
6
|
|
7
|
-
require_relative
|
8
|
-
require_relative
|
9
|
-
require_relative
|
10
|
-
require_relative
|
11
|
-
require_relative
|
12
|
-
require_relative
|
7
|
+
require_relative "reader/history"
|
8
|
+
require_relative "reader/line"
|
9
|
+
require_relative "reader/key_event"
|
10
|
+
require_relative "reader/console"
|
11
|
+
require_relative "reader/win_console"
|
12
|
+
require_relative "reader/version"
|
13
13
|
|
14
14
|
module TTY
|
15
15
|
# A class responsible for reading character input from STDIN
|
@@ -31,7 +31,7 @@ module TTY
|
|
31
31
|
#
|
32
32
|
# @api public
|
33
33
|
def self.windows?
|
34
|
-
::File::ALT_SEPARATOR ==
|
34
|
+
::File::ALT_SEPARATOR == "\\"
|
35
35
|
end
|
36
36
|
|
37
37
|
attr_reader :input
|
@@ -74,7 +74,7 @@ module TTY
|
|
74
74
|
|
75
75
|
@track_history = options.fetch(:track_history) { true }
|
76
76
|
@history_cycle = options.fetch(:history_cycle) { false }
|
77
|
-
exclude_proc = ->(line) { line.strip ==
|
77
|
+
exclude_proc = ->(line) { line.strip == "" }
|
78
78
|
@history_exclude = options.fetch(:history_exclude) { exclude_proc }
|
79
79
|
@history_duplicates = options.fetch(:history_duplicates) { false }
|
80
80
|
|
@@ -131,7 +131,7 @@ module TTY
|
|
131
131
|
#
|
132
132
|
# @api private
|
133
133
|
def select_console(input)
|
134
|
-
if self.class.windows? && !env[
|
134
|
+
if self.class.windows? && !env["TTY_TEST"]
|
135
135
|
WinConsole.new(input)
|
136
136
|
else
|
137
137
|
Console.new(input)
|
@@ -172,7 +172,7 @@ module TTY
|
|
172
172
|
def read_keypress(options = {})
|
173
173
|
opts = { echo: false, raw: true }.merge(options)
|
174
174
|
codes = unbufferred { get_codes(opts) }
|
175
|
-
char = codes ? codes.pack(
|
175
|
+
char = codes ? codes.pack("U*") : nil
|
176
176
|
|
177
177
|
trigger_key_event(char) if char
|
178
178
|
char
|
@@ -224,16 +224,16 @@ module TTY
|
|
224
224
|
# @return [String]
|
225
225
|
#
|
226
226
|
# @api public
|
227
|
-
def read_line(prompt =
|
227
|
+
def read_line(prompt = "", **options)
|
228
228
|
opts = { echo: true, raw: true }.merge(options)
|
229
|
-
value = options.fetch(:value,
|
229
|
+
value = options.fetch(:value, "")
|
230
230
|
line = Line.new(value, prompt: prompt)
|
231
231
|
screen_width = TTY::Screen.width
|
232
232
|
|
233
233
|
output.print(line)
|
234
234
|
|
235
235
|
while (codes = get_codes(opts)) && (code = codes[0])
|
236
|
-
char = codes.pack(
|
236
|
+
char = codes.pack("U*")
|
237
237
|
|
238
238
|
if [:ctrl_d, :ctrl_z].include?(console.keys[char])
|
239
239
|
trigger_key_event(char, line: line.to_s)
|
@@ -256,7 +256,7 @@ module TTY
|
|
256
256
|
elsif console.keys[char] == :up
|
257
257
|
line.replace(history_previous) if history_previous?
|
258
258
|
elsif console.keys[char] == :down
|
259
|
-
line.replace(history_next? ? history_next :
|
259
|
+
line.replace(history_next? ? history_next : "")
|
260
260
|
elsif console.keys[char] == :left
|
261
261
|
line.left
|
262
262
|
elsif console.keys[char] == :right
|
@@ -277,7 +277,7 @@ module TTY
|
|
277
277
|
if opts[:raw]
|
278
278
|
output.print("\e[1X") unless line.start?
|
279
279
|
else
|
280
|
-
output.print(?\s + (line.start? ?
|
280
|
+
output.print(?\s + (line.start? ? "" : ?\b))
|
281
281
|
end
|
282
282
|
end
|
283
283
|
|
@@ -362,7 +362,7 @@ module TTY
|
|
362
362
|
lines = []
|
363
363
|
loop do
|
364
364
|
line = read_line(*args)
|
365
|
-
break if !line || line ==
|
365
|
+
break if !line || line == ""
|
366
366
|
next if line !~ /\S/ && !@stop
|
367
367
|
if block_given?
|
368
368
|
yield(line) unless line.to_s.empty?
|
@@ -431,7 +431,7 @@ module TTY
|
|
431
431
|
# @return [nil]
|
432
432
|
#
|
433
433
|
# @api private
|
434
|
-
def trigger_key_event(char, line:
|
434
|
+
def trigger_key_event(char, line: "")
|
435
435
|
event = KeyEvent.from(console.keys, char, line)
|
436
436
|
trigger(:"key#{event.key.name}", event) if event.trigger?
|
437
437
|
trigger(:keypress, event)
|
@@ -443,7 +443,7 @@ module TTY
|
|
443
443
|
def handle_interrupt
|
444
444
|
case @interrupt
|
445
445
|
when :signal
|
446
|
-
Process.kill(
|
446
|
+
Process.kill("SIGINT", Process.pid)
|
447
447
|
when :exit
|
448
448
|
exit(130)
|
449
449
|
when Proc
|
data/lib/tty/reader/console.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "io/wait"
|
4
4
|
|
5
|
-
require_relative
|
6
|
-
require_relative
|
5
|
+
require_relative "keys"
|
6
|
+
require_relative "mode"
|
7
7
|
|
8
8
|
module TTY
|
9
9
|
class Reader
|
10
10
|
class Console
|
11
|
-
ESC = "\e"
|
12
|
-
CSI = "\e["
|
11
|
+
ESC = "\e"
|
12
|
+
CSI = "\e["
|
13
13
|
|
14
14
|
TIMEOUT = 0.1
|
15
15
|
|
data/lib/tty/reader/history.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "forwardable"
|
4
4
|
|
5
5
|
module TTY
|
6
6
|
class Reader
|
@@ -121,7 +121,7 @@ module TTY
|
|
121
121
|
end
|
122
122
|
line = @history[index]
|
123
123
|
if line.nil?
|
124
|
-
raise IndexError,
|
124
|
+
raise IndexError, "invalid index"
|
125
125
|
end
|
126
126
|
line.dup
|
127
127
|
end
|
data/lib/tty/reader/key_event.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "keys"
|
4
4
|
|
5
5
|
module TTY
|
6
6
|
class Reader
|
@@ -26,7 +26,7 @@ module TTY
|
|
26
26
|
# @return [KeyEvent]
|
27
27
|
#
|
28
28
|
# @api public
|
29
|
-
def self.from(keys, char, line =
|
29
|
+
def self.from(keys, char, line = "")
|
30
30
|
key = Key.new
|
31
31
|
key.name = (name = keys[char]) ? name : :ignore
|
32
32
|
|
data/lib/tty/reader/keys.rb
CHANGED
@@ -13,12 +13,12 @@ module TTY
|
|
13
13
|
?\C-e => :ctrl_e,
|
14
14
|
?\C-f => :ctrl_f,
|
15
15
|
?\C-g => :ctrl_g,
|
16
|
-
?\C-h => :ctrl_h, # identical to
|
17
|
-
?\C-i => :ctrl_i, # identical to
|
18
|
-
?\C-j => :ctrl_j, # identical to
|
16
|
+
?\C-h => :ctrl_h, # identical to "\b"
|
17
|
+
?\C-i => :ctrl_i, # identical to "\t"
|
18
|
+
?\C-j => :ctrl_j, # identical to "\n"
|
19
19
|
?\C-k => :ctrl_k,
|
20
20
|
?\C-l => :ctrl_l,
|
21
|
-
?\C-m => :ctrl_m, # identical to
|
21
|
+
?\C-m => :ctrl_m, # identical to "\r"
|
22
22
|
?\C-n => :ctrl_n,
|
23
23
|
?\C-o => :ctrl_o,
|
24
24
|
?\C-p => :ctrl_p,
|
@@ -133,18 +133,18 @@ module TTY
|
|
133
133
|
"\e" => :escape,
|
134
134
|
" " => :space,
|
135
135
|
"\b" => :backspace,
|
136
|
-
[224, 71].pack(
|
137
|
-
[224, 79].pack(
|
138
|
-
[224, 82].pack(
|
139
|
-
[224, 83].pack(
|
140
|
-
[224, 73].pack(
|
141
|
-
[224, 81].pack(
|
136
|
+
[224, 71].pack("U*") => :home,
|
137
|
+
[224, 79].pack("U*") => :end,
|
138
|
+
[224, 82].pack("U*") => :insert,
|
139
|
+
[224, 83].pack("U*") => :delete,
|
140
|
+
[224, 73].pack("U*") => :page_up,
|
141
|
+
[224, 81].pack("U*") => :page_down,
|
142
142
|
|
143
|
-
[224, 72].pack(
|
144
|
-
[224, 80].pack(
|
145
|
-
[224, 77].pack(
|
146
|
-
[224, 75].pack(
|
147
|
-
[224, 83].pack(
|
143
|
+
[224, 72].pack("U*") => :up,
|
144
|
+
[224, 80].pack("U*") => :down,
|
145
|
+
[224, 77].pack("U*") => :right,
|
146
|
+
[224, 75].pack("U*") => :left,
|
147
|
+
[224, 83].pack("U*") => :clear,
|
148
148
|
|
149
149
|
"\x00;" => :f1,
|
150
150
|
"\x00<" => :f2,
|
data/lib/tty/reader/line.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "forwardable"
|
4
4
|
|
5
5
|
module TTY
|
6
6
|
class Reader
|
@@ -15,7 +15,7 @@ module TTY
|
|
15
15
|
#
|
16
16
|
# @api public
|
17
17
|
def self.sanitize(text)
|
18
|
-
text.dup.gsub(ANSI_MATCHER,
|
18
|
+
text.dup.gsub(ANSI_MATCHER, "")
|
19
19
|
end
|
20
20
|
|
21
21
|
# The editable text
|
@@ -37,7 +37,7 @@ module TTY
|
|
37
37
|
# Create a Line instance
|
38
38
|
#
|
39
39
|
# @api private
|
40
|
-
def initialize(text =
|
40
|
+
def initialize(text = "", prompt: "")
|
41
41
|
@prompt = prompt.dup
|
42
42
|
@text = text.dup
|
43
43
|
@cursor = [0, @text.length].max
|
@@ -138,9 +138,9 @@ module TTY
|
|
138
138
|
# the characters to insert
|
139
139
|
#
|
140
140
|
# @example
|
141
|
-
# text =
|
142
|
-
# line[5]=
|
143
|
-
# =>
|
141
|
+
# text = "aaa"
|
142
|
+
# line[5]= "b"
|
143
|
+
# => "aaa b"
|
144
144
|
#
|
145
145
|
# @api public
|
146
146
|
def []=(i, chars)
|
@@ -153,7 +153,7 @@ module TTY
|
|
153
153
|
end
|
154
154
|
|
155
155
|
if i <= 0
|
156
|
-
before_text =
|
156
|
+
before_text = ""
|
157
157
|
after_text = @text.dup
|
158
158
|
elsif i > @text.length - 1 # insert outside of line input
|
159
159
|
before_text = @text.dup
|
data/lib/tty/reader/mode.rb
CHANGED
data/lib/tty/reader/version.rb
CHANGED
data/lib/tty/reader/win_api.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "keys"
|
4
4
|
|
5
5
|
module TTY
|
6
6
|
class Reader
|
7
7
|
class WinConsole
|
8
|
-
ESC = "\e"
|
9
|
-
NUL_HEX = "\x00"
|
10
|
-
EXT_HEX = "\xE0"
|
8
|
+
ESC = "\e"
|
9
|
+
NUL_HEX = "\x00"
|
10
|
+
EXT_HEX = "\xE0"
|
11
11
|
|
12
12
|
# Key codes
|
13
13
|
#
|
@@ -24,7 +24,7 @@ module TTY
|
|
24
24
|
attr_reader :escape_codes
|
25
25
|
|
26
26
|
def initialize(input)
|
27
|
-
require_relative
|
27
|
+
require_relative "win_api"
|
28
28
|
@input = input
|
29
29
|
@keys = Keys.ctrl_keys.merge(Keys.win_keys)
|
30
30
|
@escape_codes = [[NUL_HEX.ord], [ESC.ord], EXT_HEX.bytes.to_a]
|
metadata
CHANGED
@@ -1,31 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tty-reader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Murach
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: tty-screen
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '0.8'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '0.8'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: tty-
|
28
|
+
name: tty-cursor
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
@@ -39,33 +39,19 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.7'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: wisper
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0
|
47
|
+
version: '2.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: bundler
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.5.0
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 1.5.0
|
54
|
+
version: '2.0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rake
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,26 +85,17 @@ description: A set of methods for processing keyboard input in character, line a
|
|
99
85
|
and re-edit those inputs. It lets you register to listen for keystroke events and
|
100
86
|
trigger custom key events yourself.
|
101
87
|
email:
|
102
|
-
-
|
88
|
+
- piotr@piotrmurach.com
|
103
89
|
executables: []
|
104
90
|
extensions: []
|
105
|
-
extra_rdoc_files:
|
91
|
+
extra_rdoc_files:
|
92
|
+
- README.md
|
93
|
+
- CHANGELOG.md
|
94
|
+
- LICENSE.txt
|
106
95
|
files:
|
107
96
|
- CHANGELOG.md
|
108
97
|
- LICENSE.txt
|
109
98
|
- README.md
|
110
|
-
- Rakefile
|
111
|
-
- benchmarks/speed_read_char.rb
|
112
|
-
- benchmarks/speed_read_line.rb
|
113
|
-
- bin/console
|
114
|
-
- bin/setup
|
115
|
-
- examples/keypress.rb
|
116
|
-
- examples/keypress_nonblock.rb
|
117
|
-
- examples/line.rb
|
118
|
-
- examples/multi_prompt.rb
|
119
|
-
- examples/multiline.rb
|
120
|
-
- examples/noecho.rb
|
121
|
-
- examples/shell.rb
|
122
99
|
- lib/tty-reader.rb
|
123
100
|
- lib/tty/reader.rb
|
124
101
|
- lib/tty/reader/console.rb
|
@@ -130,20 +107,7 @@ files:
|
|
130
107
|
- lib/tty/reader/version.rb
|
131
108
|
- lib/tty/reader/win_api.rb
|
132
109
|
- lib/tty/reader/win_console.rb
|
133
|
-
|
134
|
-
- spec/unit/history_spec.rb
|
135
|
-
- spec/unit/key_event_spec.rb
|
136
|
-
- spec/unit/line_spec.rb
|
137
|
-
- spec/unit/publish_keypress_event_spec.rb
|
138
|
-
- spec/unit/read_keypress_spec.rb
|
139
|
-
- spec/unit/read_line_spec.rb
|
140
|
-
- spec/unit/read_multiline_spec.rb
|
141
|
-
- spec/unit/subscribe_spec.rb
|
142
|
-
- tasks/console.rake
|
143
|
-
- tasks/coverage.rake
|
144
|
-
- tasks/spec.rake
|
145
|
-
- tty-reader.gemspec
|
146
|
-
homepage: https://piotrmurach.github.io/tty
|
110
|
+
homepage: https://ttytoolkit.org
|
147
111
|
licenses:
|
148
112
|
- MIT
|
149
113
|
metadata:
|
@@ -151,7 +115,7 @@ metadata:
|
|
151
115
|
bug_tracker_uri: https://github.com/piotrmurach/tty-reader/issues
|
152
116
|
changelog_uri: https://github.com/piotrmurach/tty-reader/blob/master/CHANGELOG.md
|
153
117
|
documentation_uri: https://www.rubydoc.info/gems/tty-reader
|
154
|
-
homepage_uri: https://
|
118
|
+
homepage_uri: https://ttytoolkit.org
|
155
119
|
source_code_uri: https://github.com/piotrmurach/tty-reader
|
156
120
|
post_install_message:
|
157
121
|
rdoc_options: []
|
@@ -168,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
132
|
- !ruby/object:Gem::Version
|
169
133
|
version: '0'
|
170
134
|
requirements: []
|
171
|
-
rubygems_version: 3.
|
135
|
+
rubygems_version: 3.1.2
|
172
136
|
signing_key:
|
173
137
|
specification_version: 4
|
174
138
|
summary: A set of methods for processing keyboard input in character, line and multiline
|