tty-prompt 0.11.0 → 0.12.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 +25 -0
- data/README.md +66 -7
- data/examples/key_events.rb +11 -0
- data/examples/keypress.rb +3 -5
- data/examples/multiline.rb +9 -0
- data/examples/pause.rb +7 -0
- data/lib/tty/prompt.rb +82 -44
- data/lib/tty/prompt/confirm_question.rb +20 -36
- data/lib/tty/prompt/enum_list.rb +32 -23
- data/lib/tty/prompt/expander.rb +35 -31
- data/lib/tty/prompt/keypress.rb +91 -0
- data/lib/tty/prompt/list.rb +38 -23
- data/lib/tty/prompt/mask_question.rb +4 -7
- data/lib/tty/prompt/multi_list.rb +3 -1
- data/lib/tty/prompt/multiline.rb +71 -0
- data/lib/tty/prompt/question.rb +33 -35
- data/lib/tty/prompt/reader.rb +154 -38
- data/lib/tty/prompt/reader/codes.rb +4 -4
- data/lib/tty/prompt/reader/console.rb +1 -1
- data/lib/tty/prompt/reader/history.rb +145 -0
- data/lib/tty/prompt/reader/key_event.rb +4 -0
- data/lib/tty/prompt/reader/line.rb +162 -0
- data/lib/tty/prompt/reader/mode.rb +2 -2
- data/lib/tty/prompt/reader/win_console.rb +5 -1
- data/lib/tty/prompt/slider.rb +18 -12
- data/lib/tty/prompt/timeout.rb +48 -0
- data/lib/tty/prompt/version.rb +1 -1
- data/spec/unit/ask_spec.rb +15 -0
- data/spec/unit/converters/convert_bool_spec.rb +1 -0
- data/spec/unit/keypress_spec.rb +35 -6
- data/spec/unit/multi_select_spec.rb +18 -0
- data/spec/unit/multiline_spec.rb +67 -9
- data/spec/unit/question/default_spec.rb +1 -0
- data/spec/unit/question/echo_spec.rb +8 -0
- data/spec/unit/question/in_spec.rb +13 -0
- data/spec/unit/question/required_spec.rb +31 -2
- data/spec/unit/question/validate_spec.rb +39 -9
- data/spec/unit/reader/history_spec.rb +172 -0
- data/spec/unit/reader/key_event_spec.rb +12 -8
- data/spec/unit/reader/line_spec.rb +110 -0
- data/spec/unit/reader/publish_keypress_event_spec.rb +11 -0
- data/spec/unit/reader/read_line_spec.rb +32 -2
- data/spec/unit/reader/read_multiline_spec.rb +21 -7
- data/spec/unit/select_spec.rb +40 -1
- data/spec/unit/yes_no_spec.rb +48 -4
- metadata +14 -3
- data/lib/tty/prompt/history.rb +0 -16
data/spec/unit/yes_no_spec.rb
CHANGED
@@ -11,6 +11,9 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
11
11
|
expect(prompt.yes?("Are you a human?")).to eq(true)
|
12
12
|
expect(prompt.output.string).to eq([
|
13
13
|
"Are you a human? \e[90m(Y/n)\e[0m ",
|
14
|
+
"\e[2K\e[1GAre you a human? \e[90m(Y/n)\e[0m y",
|
15
|
+
"\e[2K\e[1GAre you a human? \e[90m(Y/n)\e[0m ye",
|
16
|
+
"\e[2K\e[1GAre you a human? \e[90m(Y/n)\e[0m yes",
|
14
17
|
"\e[1A\e[2K\e[1G",
|
15
18
|
"Are you a human? \e[32mYes\e[0m\n"
|
16
19
|
].join)
|
@@ -22,6 +25,8 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
22
25
|
expect(prompt.yes?("Are you a human?")).to eq(false)
|
23
26
|
expect(prompt.output.string).to eq([
|
24
27
|
"Are you a human? \e[90m(Y/n)\e[0m ",
|
28
|
+
"\e[2K\e[1GAre you a human? \e[90m(Y/n)\e[0m n",
|
29
|
+
"\e[2K\e[1GAre you a human? \e[90m(Y/n)\e[0m no",
|
25
30
|
"\e[1A\e[2K\e[1G",
|
26
31
|
"Are you a human? \e[32mno\e[0m\n"
|
27
32
|
].join)
|
@@ -33,6 +38,7 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
33
38
|
expect(prompt.yes?("Are you a human?")).to eq(true)
|
34
39
|
expect(prompt.output.string).to eq([
|
35
40
|
"Are you a human? \e[90m(Y/n)\e[0m ",
|
41
|
+
"\e[2K\e[1GAre you a human? \e[90m(Y/n)\e[0m \n",
|
36
42
|
"\e[1A\e[2K\e[1G",
|
37
43
|
"Are you a human? \e[32mYes\e[0m\n"
|
38
44
|
].join)
|
@@ -43,9 +49,10 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
43
49
|
prompt.input.rewind
|
44
50
|
expect(prompt.yes?("Are you a human?", default: false)).to eq(false)
|
45
51
|
expect(prompt.output.string).to eq([
|
46
|
-
"Are you a human? \e[90m(
|
52
|
+
"Are you a human? \e[90m(y/N)\e[0m ",
|
53
|
+
"\e[2K\e[1GAre you a human? \e[90m(y/N)\e[0m \n",
|
47
54
|
"\e[1A\e[2K\e[1G",
|
48
|
-
"Are you a human? \e[
|
55
|
+
"Are you a human? \e[32mNo\e[0m\n"
|
49
56
|
].join)
|
50
57
|
end
|
51
58
|
|
@@ -59,6 +66,11 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
59
66
|
expect(result).to eq(false)
|
60
67
|
expect(prompt.output.string).to eq([
|
61
68
|
"Are you a human? \e[90m(Yup/nope)\e[0m ",
|
69
|
+
"\e[2K\e[1GAre you a human? \e[90m(Yup/nope)\e[0m N",
|
70
|
+
"\e[2K\e[1GAre you a human? \e[90m(Yup/nope)\e[0m No",
|
71
|
+
"\e[2K\e[1GAre you a human? \e[90m(Yup/nope)\e[0m Nop",
|
72
|
+
"\e[2K\e[1GAre you a human? \e[90m(Yup/nope)\e[0m Nope",
|
73
|
+
"\e[2K\e[1GAre you a human? \e[90m(Yup/nope)\e[0m Nope\n",
|
62
74
|
"\e[1A\e[2K\e[1G",
|
63
75
|
"Are you a human? \e[32mnope\e[0m\n"
|
64
76
|
].join)
|
@@ -73,6 +85,11 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
73
85
|
expect(result).to eq(false)
|
74
86
|
expect(prompt.output.string).to eq([
|
75
87
|
"Are you a human? \e[90m(Yup/nope)\e[0m ",
|
88
|
+
"\e[2K\e[1GAre you a human? \e[90m(Yup/nope)\e[0m N",
|
89
|
+
"\e[2K\e[1GAre you a human? \e[90m(Yup/nope)\e[0m No",
|
90
|
+
"\e[2K\e[1GAre you a human? \e[90m(Yup/nope)\e[0m Nop",
|
91
|
+
"\e[2K\e[1GAre you a human? \e[90m(Yup/nope)\e[0m Nope",
|
92
|
+
"\e[2K\e[1GAre you a human? \e[90m(Yup/nope)\e[0m Nope\n",
|
76
93
|
"\e[1A\e[2K\e[1G",
|
77
94
|
"Are you a human? \e[32mnope\e[0m\n"
|
78
95
|
].join)
|
@@ -86,6 +103,7 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
86
103
|
expect(result).to eq(true)
|
87
104
|
expect(prompt.output.string).to eq([
|
88
105
|
"Are you a human? \e[90m(Agree/Disagree)\e[0m ",
|
106
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m \n",
|
89
107
|
"\e[1A\e[2K\e[1G",
|
90
108
|
"Are you a human? \e[32mAgree\e[0m\n"
|
91
109
|
].join)
|
@@ -104,6 +122,15 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
104
122
|
expect(result).to eq(false)
|
105
123
|
expect(prompt.output.string).to eq([
|
106
124
|
"Are you a human? \e[90m(Agree/Disagree)\e[0m ",
|
125
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m d",
|
126
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m di",
|
127
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m dis",
|
128
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m disa",
|
129
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m disag",
|
130
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m disagr",
|
131
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m disagre",
|
132
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m disagree",
|
133
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m disagree\n",
|
107
134
|
"\e[1A\e[2K\e[1G",
|
108
135
|
"Are you a human? \e[32mDisagree\e[0m\n"
|
109
136
|
].join)
|
@@ -117,6 +144,8 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
117
144
|
expect(prompt.no?("Are you a human?")).to eq(true)
|
118
145
|
expect(prompt.output.string).to eq([
|
119
146
|
"Are you a human? \e[90m(y/N)\e[0m ",
|
147
|
+
"\e[2K\e[1GAre you a human? \e[90m(y/N)\e[0m n",
|
148
|
+
"\e[2K\e[1GAre you a human? \e[90m(y/N)\e[0m no",
|
120
149
|
"\e[1A\e[2K\e[1G",
|
121
150
|
"Are you a human? \e[32mNo\e[0m\n"
|
122
151
|
].join)
|
@@ -128,8 +157,11 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
128
157
|
expect(prompt.no?("Are you a human?")).to eq(false)
|
129
158
|
expect(prompt.output.string).to eq([
|
130
159
|
"Are you a human? \e[90m(y/N)\e[0m ",
|
160
|
+
"\e[2K\e[1GAre you a human? \e[90m(y/N)\e[0m y",
|
161
|
+
"\e[2K\e[1GAre you a human? \e[90m(y/N)\e[0m ye",
|
162
|
+
"\e[2K\e[1GAre you a human? \e[90m(y/N)\e[0m yes",
|
131
163
|
"\e[1A\e[2K\e[1G",
|
132
|
-
"Are you a human? \e[
|
164
|
+
"Are you a human? \e[32myes\e[0m\n"
|
133
165
|
].join)
|
134
166
|
end
|
135
167
|
|
@@ -139,6 +171,7 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
139
171
|
expect(prompt.no?("Are you a human?")).to eq(true)
|
140
172
|
expect(prompt.output.string).to eq([
|
141
173
|
"Are you a human? \e[90m(y/N)\e[0m ",
|
174
|
+
"\e[2K\e[1GAre you a human? \e[90m(y/N)\e[0m \n",
|
142
175
|
"\e[1A\e[2K\e[1G",
|
143
176
|
"Are you a human? \e[32mNo\e[0m\n"
|
144
177
|
].join)
|
@@ -149,7 +182,8 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
149
182
|
prompt.input.rewind
|
150
183
|
expect(prompt.no?("Are you a human?", default: true)).to eq(false)
|
151
184
|
expect(prompt.output.string).to eq([
|
152
|
-
"Are you a human? \e[90m(
|
185
|
+
"Are you a human? \e[90m(Y/n)\e[0m ",
|
186
|
+
"\e[2K\e[1GAre you a human? \e[90m(Y/n)\e[0m \n",
|
153
187
|
"\e[1A\e[2K\e[1G",
|
154
188
|
"Are you a human? \e[32mYes\e[0m\n"
|
155
189
|
].join)
|
@@ -165,6 +199,10 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
165
199
|
expect(result).to eq(false)
|
166
200
|
expect(prompt.output.string).to eq([
|
167
201
|
"Are you a human? \e[90m(yup/Nope)\e[0m ",
|
202
|
+
"\e[2K\e[1GAre you a human? \e[90m(yup/Nope)\e[0m Y",
|
203
|
+
"\e[2K\e[1GAre you a human? \e[90m(yup/Nope)\e[0m Yu",
|
204
|
+
"\e[2K\e[1GAre you a human? \e[90m(yup/Nope)\e[0m Yup",
|
205
|
+
"\e[2K\e[1GAre you a human? \e[90m(yup/Nope)\e[0m Yup\n",
|
168
206
|
"\e[1A\e[2K\e[1G",
|
169
207
|
"Are you a human? \e[32myup\e[0m\n"
|
170
208
|
].join)
|
@@ -183,6 +221,12 @@ RSpec.describe TTY::Prompt, 'confirmation' do
|
|
183
221
|
expect(result).to eq(false)
|
184
222
|
expect(prompt.output.string).to eq([
|
185
223
|
"Are you a human? \e[90m(Agree/Disagree)\e[0m ",
|
224
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m a",
|
225
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m ag",
|
226
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m agr",
|
227
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m agre",
|
228
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m agree",
|
229
|
+
"\e[2K\e[1GAre you a human? \e[90m(Agree/Disagree)\e[0m agree\n",
|
186
230
|
"\e[1A\e[2K\e[1G",
|
187
231
|
"Are you a human? \e[32mAgree\e[0m\n"
|
188
232
|
].join)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tty-prompt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Murach
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: necromancer
|
@@ -142,10 +142,13 @@ files:
|
|
142
142
|
- examples/expand.rb
|
143
143
|
- examples/in.rb
|
144
144
|
- examples/inputs.rb
|
145
|
+
- examples/key_events.rb
|
145
146
|
- examples/keypress.rb
|
146
147
|
- examples/mask.rb
|
147
148
|
- examples/multi_select.rb
|
148
149
|
- examples/multi_select_paged.rb
|
150
|
+
- examples/multiline.rb
|
151
|
+
- examples/pause.rb
|
149
152
|
- examples/select.rb
|
150
153
|
- examples/select_paginated.rb
|
151
154
|
- examples/slider.rb
|
@@ -165,10 +168,11 @@ files:
|
|
165
168
|
- lib/tty/prompt/enum_paginator.rb
|
166
169
|
- lib/tty/prompt/evaluator.rb
|
167
170
|
- lib/tty/prompt/expander.rb
|
168
|
-
- lib/tty/prompt/
|
171
|
+
- lib/tty/prompt/keypress.rb
|
169
172
|
- lib/tty/prompt/list.rb
|
170
173
|
- lib/tty/prompt/mask_question.rb
|
171
174
|
- lib/tty/prompt/multi_list.rb
|
175
|
+
- lib/tty/prompt/multiline.rb
|
172
176
|
- lib/tty/prompt/paginator.rb
|
173
177
|
- lib/tty/prompt/question.rb
|
174
178
|
- lib/tty/prompt/question/checks.rb
|
@@ -177,7 +181,9 @@ files:
|
|
177
181
|
- lib/tty/prompt/reader.rb
|
178
182
|
- lib/tty/prompt/reader/codes.rb
|
179
183
|
- lib/tty/prompt/reader/console.rb
|
184
|
+
- lib/tty/prompt/reader/history.rb
|
180
185
|
- lib/tty/prompt/reader/key_event.rb
|
186
|
+
- lib/tty/prompt/reader/line.rb
|
181
187
|
- lib/tty/prompt/reader/mode.rb
|
182
188
|
- lib/tty/prompt/reader/win_api.rb
|
183
189
|
- lib/tty/prompt/reader/win_console.rb
|
@@ -186,6 +192,7 @@ files:
|
|
186
192
|
- lib/tty/prompt/statement.rb
|
187
193
|
- lib/tty/prompt/suggestion.rb
|
188
194
|
- lib/tty/prompt/symbols.rb
|
195
|
+
- lib/tty/prompt/timeout.rb
|
189
196
|
- lib/tty/prompt/utils.rb
|
190
197
|
- lib/tty/prompt/version.rb
|
191
198
|
- lib/tty/test_prompt.rb
|
@@ -236,7 +243,9 @@ files:
|
|
236
243
|
- spec/unit/question/validate_spec.rb
|
237
244
|
- spec/unit/question/validation/call_spec.rb
|
238
245
|
- spec/unit/question/validation/coerce_spec.rb
|
246
|
+
- spec/unit/reader/history_spec.rb
|
239
247
|
- spec/unit/reader/key_event_spec.rb
|
248
|
+
- spec/unit/reader/line_spec.rb
|
240
249
|
- spec/unit/reader/publish_keypress_event_spec.rb
|
241
250
|
- spec/unit/reader/read_keypress_spec.rb
|
242
251
|
- spec/unit/reader/read_line_spec.rb
|
@@ -325,7 +334,9 @@ test_files:
|
|
325
334
|
- spec/unit/question/validate_spec.rb
|
326
335
|
- spec/unit/question/validation/call_spec.rb
|
327
336
|
- spec/unit/question/validation/coerce_spec.rb
|
337
|
+
- spec/unit/reader/history_spec.rb
|
328
338
|
- spec/unit/reader/key_event_spec.rb
|
339
|
+
- spec/unit/reader/line_spec.rb
|
329
340
|
- spec/unit/reader/publish_keypress_event_spec.rb
|
330
341
|
- spec/unit/reader/read_keypress_spec.rb
|
331
342
|
- spec/unit/reader/read_line_spec.rb
|
data/lib/tty/prompt/history.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module TTY
|
4
|
-
class Prompt
|
5
|
-
# A class responsible for storing shell interactions
|
6
|
-
class History
|
7
|
-
|
8
|
-
attr_reader :max_size
|
9
|
-
|
10
|
-
def initialize(max_size=nil)
|
11
|
-
@max_size = max_size
|
12
|
-
end
|
13
|
-
|
14
|
-
end # History
|
15
|
-
end # Prompt
|
16
|
-
end # TTY
|