tty-prompt 0.10.1 → 0.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
- data/.travis.yml +0 -1
- data/CHANGELOG.md +30 -0
- data/README.md +39 -9
- data/examples/echo.rb +5 -1
- data/examples/inputs.rb +10 -0
- data/examples/mask.rb +6 -2
- data/examples/multi_select.rb +1 -1
- data/examples/multi_select_paged.rb +9 -0
- data/examples/select.rb +5 -5
- data/examples/slider.rb +1 -1
- data/lib/tty-prompt.rb +2 -36
- data/lib/tty/prompt.rb +49 -8
- data/lib/tty/prompt/choices.rb +2 -0
- data/lib/tty/prompt/confirm_question.rb +6 -1
- data/lib/tty/prompt/converter_dsl.rb +9 -6
- data/lib/tty/prompt/converter_registry.rb +27 -19
- data/lib/tty/prompt/converters.rb +16 -22
- data/lib/tty/prompt/enum_list.rb +8 -4
- data/lib/tty/prompt/enum_paginator.rb +2 -0
- data/lib/tty/prompt/evaluator.rb +1 -1
- data/lib/tty/prompt/expander.rb +1 -1
- data/lib/tty/prompt/list.rb +21 -11
- data/lib/tty/prompt/mask_question.rb +15 -6
- data/lib/tty/prompt/multi_list.rb +12 -10
- data/lib/tty/prompt/question.rb +38 -36
- data/lib/tty/prompt/question/modifier.rb +2 -0
- data/lib/tty/prompt/question/validation.rb +5 -4
- data/lib/tty/prompt/reader.rb +104 -58
- data/lib/tty/prompt/reader/codes.rb +103 -63
- data/lib/tty/prompt/reader/console.rb +57 -0
- data/lib/tty/prompt/reader/key_event.rb +51 -88
- data/lib/tty/prompt/reader/mode.rb +5 -5
- data/lib/tty/prompt/reader/win_api.rb +29 -0
- data/lib/tty/prompt/reader/win_console.rb +49 -0
- data/lib/tty/prompt/slider.rb +10 -6
- data/lib/tty/prompt/suggestion.rb +1 -1
- data/lib/tty/prompt/symbols.rb +52 -10
- data/lib/tty/prompt/version.rb +1 -1
- data/lib/tty/{prompt/test.rb → test_prompt.rb} +2 -1
- data/spec/unit/ask_spec.rb +8 -16
- data/spec/unit/converters/convert_bool_spec.rb +1 -2
- data/spec/unit/converters/on_error_spec.rb +9 -0
- data/spec/unit/enum_paginator_spec.rb +16 -0
- data/spec/unit/enum_select_spec.rb +69 -25
- data/spec/unit/expand_spec.rb +14 -14
- data/spec/unit/mask_spec.rb +66 -29
- data/spec/unit/multi_select_spec.rb +120 -74
- data/spec/unit/new_spec.rb +5 -3
- data/spec/unit/paginator_spec.rb +16 -0
- data/spec/unit/question/default_spec.rb +2 -4
- data/spec/unit/question/echo_spec.rb +2 -3
- data/spec/unit/question/in_spec.rb +9 -14
- data/spec/unit/question/modifier/letter_case_spec.rb +32 -11
- data/spec/unit/question/modifier/whitespace_spec.rb +41 -15
- data/spec/unit/question/required_spec.rb +9 -13
- data/spec/unit/question/validate_spec.rb +7 -10
- data/spec/unit/reader/key_event_spec.rb +36 -50
- data/spec/unit/reader/publish_keypress_event_spec.rb +5 -3
- data/spec/unit/reader/read_keypress_spec.rb +8 -7
- data/spec/unit/reader/read_line_spec.rb +9 -9
- data/spec/unit/reader/read_multiline_spec.rb +8 -7
- data/spec/unit/select_spec.rb +85 -25
- data/spec/unit/slider_spec.rb +43 -16
- data/spec/unit/yes_no_spec.rb +14 -28
- data/tasks/console.rake +1 -0
- data/tty-prompt.gemspec +2 -2
- metadata +14 -7
data/lib/tty/prompt/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
|
3
|
+
require_relative 'prompt'
|
4
4
|
|
5
5
|
module TTY
|
6
6
|
# Used for initializing test cases
|
@@ -11,6 +11,7 @@ module TTY
|
|
11
11
|
options.merge!({
|
12
12
|
input: @input,
|
13
13
|
output: @output,
|
14
|
+
env: { "TTY_TEST" => true },
|
14
15
|
enable_color: options.fetch(:enable_color) { true }
|
15
16
|
})
|
16
17
|
super(options)
|
data/spec/unit/ask_spec.rb
CHANGED
@@ -8,8 +8,7 @@ RSpec.describe TTY::Prompt, '#ask' do
|
|
8
8
|
prompt.ask('What is your name?')
|
9
9
|
expect(prompt.output.string).to eq([
|
10
10
|
"What is your name? ",
|
11
|
-
"\e[
|
12
|
-
"\e[1000D\e[K",
|
11
|
+
"\e[1A\e[2K\e[1G",
|
13
12
|
"What is your name? \n"
|
14
13
|
].join)
|
15
14
|
end
|
@@ -35,8 +34,7 @@ RSpec.describe TTY::Prompt, '#ask' do
|
|
35
34
|
expect(answer).to eq(nil)
|
36
35
|
expect(prompt.output.string).to eq([
|
37
36
|
"[?] Are you Polish? ",
|
38
|
-
"\e[
|
39
|
-
"\e[1000D\e[K",
|
37
|
+
"\e[1A\e[2K\e[1G",
|
40
38
|
"[?] Are you Polish? \n"
|
41
39
|
].join)
|
42
40
|
end
|
@@ -50,8 +48,7 @@ RSpec.describe TTY::Prompt, '#ask' do
|
|
50
48
|
expect(answer).to eq('Piotr')
|
51
49
|
expect(prompt.output.string).to eq([
|
52
50
|
"What is your name? \e[90m(Piotr)\e[0m ",
|
53
|
-
"\e[
|
54
|
-
"\e[1000D\e[K",
|
51
|
+
"\e[1A\e[2K\e[1G",
|
55
52
|
"What is your name? \e[32mPiotr\e[0m\n"
|
56
53
|
].join)
|
57
54
|
end
|
@@ -64,8 +61,7 @@ RSpec.describe TTY::Prompt, '#ask' do
|
|
64
61
|
expect(answer).to eq('Piotr')
|
65
62
|
expect(prompt.output.string).to eq([
|
66
63
|
"What is your name? \e[31m(Piotr)\e[0m ",
|
67
|
-
"\e[
|
68
|
-
"\e[1000D\e[K",
|
64
|
+
"\e[1A\e[2K\e[1G",
|
69
65
|
"What is your name? \e[36mPiotr\e[0m\n"
|
70
66
|
].join)
|
71
67
|
end
|
@@ -78,8 +74,7 @@ RSpec.describe TTY::Prompt, '#ask' do
|
|
78
74
|
expect(answer).to eq('')
|
79
75
|
expect(prompt.output.string).to eq([
|
80
76
|
"What is your name? ",
|
81
|
-
"\e[
|
82
|
-
"\e[1000D\e[K",
|
77
|
+
"\e[1A\e[2K\e[1G",
|
83
78
|
"What is your name? \n"
|
84
79
|
].join)
|
85
80
|
end
|
@@ -92,8 +87,7 @@ RSpec.describe TTY::Prompt, '#ask' do
|
|
92
87
|
expect(answer).to eq(nil)
|
93
88
|
expect(prompt.output.string).to eq([
|
94
89
|
"What is your name? ",
|
95
|
-
"\e[
|
96
|
-
"\e[1000D\e[K",
|
90
|
+
"\e[1A\e[2K\e[1G",
|
97
91
|
"What is your name? \n"
|
98
92
|
].join)
|
99
93
|
end
|
@@ -113,12 +107,10 @@ RSpec.describe TTY::Prompt, '#ask' do
|
|
113
107
|
|
114
108
|
expect(prompt.output.string).to eq([
|
115
109
|
"[?] What is your name? ",
|
116
|
-
"\e[
|
117
|
-
"\e[1000D\e[K",
|
110
|
+
"\e[1A\e[2K\e[1G",
|
118
111
|
"[?] What is your name? \e[36mPiotr\e[0m\n",
|
119
112
|
":-) What is your name? ",
|
120
|
-
"\e[
|
121
|
-
"\e[1000D\e[K",
|
113
|
+
"\e[1A\e[2K\e[1G",
|
122
114
|
":-) What is your name? \e[34mPiotr\e[0m\n"
|
123
115
|
].join)
|
124
116
|
end
|
@@ -19,8 +19,7 @@ RSpec.describe TTY::Prompt::Question, 'convert bool' do
|
|
19
19
|
expect(response).to eql(true)
|
20
20
|
expect(prompt.output.string).to eq([
|
21
21
|
"Do you read books? \e[90m(true)\e[0m ",
|
22
|
-
"\e[
|
23
|
-
"\e[1000D\e[K",
|
22
|
+
"\e[1A\e[2K\e[1G",
|
24
23
|
"Do you read books? \e[32mtrue\e[0m\n"
|
25
24
|
].join)
|
26
25
|
end
|
@@ -1,6 +1,22 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
RSpec.describe TTY::Prompt::EnumPaginator, '#paginate' do
|
4
|
+
it "ignores per_page when equal items " do
|
5
|
+
list = %w(a b c d)
|
6
|
+
paginator = described_class.new({per_page: 4})
|
7
|
+
|
8
|
+
expect(paginator.paginate(list, 1).to_a).to eq([
|
9
|
+
['a',0],['b',1],['c',2],['d',3]])
|
10
|
+
end
|
11
|
+
|
12
|
+
it "ignores per_page when less items " do
|
13
|
+
list = %w(a b c d)
|
14
|
+
paginator = described_class.new({per_page: 5})
|
15
|
+
|
16
|
+
expect(paginator.paginate(list, 1).to_a).to eq([
|
17
|
+
['a',0],['b',1],['c',2],['d',3]])
|
18
|
+
end
|
19
|
+
|
4
20
|
it "paginates items matching per_page count" do
|
5
21
|
list = %w(a b c d e f)
|
6
22
|
paginator = described_class.new({per_page: 3})
|
@@ -1,8 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
RSpec.describe TTY::Prompt do
|
4
|
-
let(:page_help) {
|
5
|
-
}
|
6
4
|
it "selects default option when return pressed immediately" do
|
7
5
|
prompt = TTY::TestPrompt.new
|
8
6
|
choices = %w(/bin/nano /usr/bin/vim.basic /usr/bin/vim.tiny)
|
@@ -16,7 +14,8 @@ RSpec.describe TTY::Prompt do
|
|
16
14
|
" 2) /usr/bin/vim.basic\n",
|
17
15
|
" 3) /usr/bin/vim.tiny\n",
|
18
16
|
" Choose 1-3 [1]: ",
|
19
|
-
"\e[
|
17
|
+
"\e[2K\e[1G\e[1A" * 4,
|
18
|
+
"\e[2K\e[1G\e[J",
|
20
19
|
"Select an editor? \e[32m/bin/nano\e[0m\n"
|
21
20
|
].join)
|
22
21
|
end
|
@@ -34,20 +33,22 @@ RSpec.describe TTY::Prompt do
|
|
34
33
|
"\e[32m 2) /usr/bin/vim.basic\e[0m\n",
|
35
34
|
" 3) /usr/bin/vim.tiny\n",
|
36
35
|
" Choose 1-3 [2]: ",
|
37
|
-
"\e[
|
36
|
+
"\e[2K\e[1G\e[1A" * 4,
|
37
|
+
"\e[2K\e[1G\e[J",
|
38
38
|
"Select an editor? \n",
|
39
39
|
" 1) /bin/nano\n",
|
40
40
|
" 2) /usr/bin/vim.basic\n",
|
41
41
|
"\e[32m 3) /usr/bin/vim.tiny\e[0m\n",
|
42
42
|
" Choose 1-3 [2]: 3",
|
43
|
-
"\e[
|
43
|
+
"\e[2K\e[1G\e[1A" * 4,
|
44
|
+
"\e[2K\e[1G\e[J",
|
44
45
|
"Select an editor? \e[32m/usr/bin/vim.tiny\e[0m\n"
|
45
46
|
].join)
|
46
47
|
end
|
47
48
|
|
48
49
|
it "selects option through DSL" do
|
49
50
|
prompt = TTY::TestPrompt.new
|
50
|
-
prompt.input << "\n"
|
51
|
+
prompt.input << "1\n"
|
51
52
|
prompt.input.rewind
|
52
53
|
value = prompt.enum_select("Select an editor?") do |menu|
|
53
54
|
menu.default 2
|
@@ -58,15 +59,23 @@ RSpec.describe TTY::Prompt do
|
|
58
59
|
menu.choice "/usr/bin/vim.tiny"
|
59
60
|
end
|
60
61
|
|
61
|
-
expect(value).to eq('/
|
62
|
+
expect(value).to eq('/bin/nano')
|
62
63
|
expect(prompt.output.string).to eq([
|
63
64
|
"Select an editor? \n",
|
64
65
|
" 1. /bin/nano\n",
|
65
66
|
"\e[32m 2. /usr/bin/vim.basic\e[0m\n",
|
66
67
|
" 3. /usr/bin/vim.tiny\n",
|
67
68
|
" Choose 1-3 [2]: ",
|
68
|
-
"\e[
|
69
|
-
"
|
69
|
+
"\e[2K\e[1G\e[1A" * 4,
|
70
|
+
"\e[2K\e[1G\e[J",
|
71
|
+
"Select an editor? \n",
|
72
|
+
"\e[32m 1. /bin/nano\e[0m\n",
|
73
|
+
" 2. /usr/bin/vim.basic\n",
|
74
|
+
" 3. /usr/bin/vim.tiny\n",
|
75
|
+
" Choose 1-3 [2]: 1",
|
76
|
+
"\e[2K\e[1G\e[1A" * 4,
|
77
|
+
"\e[2K\e[1G\e[J",
|
78
|
+
"Select an editor? \e[32m/bin/nano\e[0m\n"
|
70
79
|
].join)
|
71
80
|
end
|
72
81
|
|
@@ -89,7 +98,8 @@ RSpec.describe TTY::Prompt do
|
|
89
98
|
"\e[32m 2) vim\e[0m\n",
|
90
99
|
" 3) emacs\n",
|
91
100
|
" Choose 1-3 [2]: ",
|
92
|
-
"\e[
|
101
|
+
"\e[2K\e[1G\e[1A" * 4,
|
102
|
+
"\e[2K\e[1G\e[J",
|
93
103
|
"Select an editor? \e[32mvim\e[0m\n"
|
94
104
|
].join)
|
95
105
|
end
|
@@ -107,8 +117,8 @@ RSpec.describe TTY::Prompt do
|
|
107
117
|
" 2) /usr/bin/vim.basic\n",
|
108
118
|
" 3) /usr/bin/vim.tiny\n",
|
109
119
|
" Choose 1-3 [1]: ",
|
110
|
-
"\e[
|
111
|
-
"\e[
|
120
|
+
"\e[2K\e[1G\e[1A" * 4,
|
121
|
+
"\e[2K\e[1G\e[J",
|
112
122
|
"Select an editor? \e[31m/bin/nano\e[0m\n"
|
113
123
|
].join)
|
114
124
|
end
|
@@ -126,19 +136,22 @@ RSpec.describe TTY::Prompt do
|
|
126
136
|
" 2) /usr/bin/vim.basic\n",
|
127
137
|
" 3) /usr/bin/vim.tiny\n",
|
128
138
|
" Choose 1-3 [1]: ",
|
129
|
-
"\e[
|
139
|
+
"\e[2K\e[1G\e[1A" * 4,
|
140
|
+
"\e[2K\e[1G\e[J",
|
130
141
|
"Select an editor? \n",
|
131
142
|
"\e[32m 1) /bin/nano\e[0m\n",
|
132
143
|
" 2) /usr/bin/vim.basic\n",
|
133
144
|
" 3) /usr/bin/vim.tiny\n",
|
134
145
|
" Choose 1-3 [1]: 1",
|
135
|
-
"\e[
|
146
|
+
"\e[2K\e[1G\e[1A" * 4,
|
147
|
+
"\e[2K\e[1G\e[J",
|
136
148
|
"Select an editor? \n",
|
137
149
|
"\e[32m 1) /bin/nano\e[0m\n",
|
138
150
|
" 2) /usr/bin/vim.basic\n",
|
139
151
|
" 3) /usr/bin/vim.tiny\n",
|
140
152
|
" Choose 1-3 [1]: 11",
|
141
|
-
"\e[
|
153
|
+
"\e[2K\e[1G\e[1A" * 4,
|
154
|
+
"\e[2K\e[1G\e[J",
|
142
155
|
"Select an editor? \n",
|
143
156
|
"\e[32m 1) /bin/nano\e[0m\n",
|
144
157
|
" 2) /usr/bin/vim.basic\n",
|
@@ -146,7 +159,8 @@ RSpec.describe TTY::Prompt do
|
|
146
159
|
" Choose 1-3 [1]: \n",
|
147
160
|
"\e[31m>>\e[0m Please enter a valid number",
|
148
161
|
"\e[A\e[1G\e[18C",
|
149
|
-
"\e[
|
162
|
+
"\e[2K\e[1G\e[1A" * 4,
|
163
|
+
"\e[2K\e[1G\e[J",
|
150
164
|
"Select an editor? \n",
|
151
165
|
" 1) /bin/nano\n",
|
152
166
|
"\e[32m 2) /usr/bin/vim.basic\e[0m\n",
|
@@ -154,7 +168,8 @@ RSpec.describe TTY::Prompt do
|
|
154
168
|
" Choose 1-3 [1]: 2\n",
|
155
169
|
"\e[31m>>\e[0m Please enter a valid number",
|
156
170
|
"\e[A\e[1G\e[19C",
|
157
|
-
"\e[
|
171
|
+
"\e[2K\e[1G\e[1A" * 4,
|
172
|
+
"\e[2K\e[1G\e[J",
|
158
173
|
"Select an editor? \e[32m/usr/bin/vim.basic\e[0m\n"
|
159
174
|
].join)
|
160
175
|
end
|
@@ -174,11 +189,33 @@ RSpec.describe TTY::Prompt do
|
|
174
189
|
" Choose 1-8 [4]: ",
|
175
190
|
"\n\e[90m(Press tab/right or left to reveal more choices)\e[0m",
|
176
191
|
"\e[A\e[1G\e[18C",
|
177
|
-
"\e[
|
192
|
+
"\e[2K\e[1G\e[1A" * 4,
|
193
|
+
"\e[2K\e[1G\e[J",
|
178
194
|
"What letter? \e[32mD\e[0m\n"
|
179
195
|
].join)
|
180
196
|
end
|
181
197
|
|
198
|
+
it "doesn't paginate short selections" do
|
199
|
+
prompt = TTY::TestPrompt.new
|
200
|
+
choices = %w(A B C D)
|
201
|
+
prompt.input << "\r"
|
202
|
+
prompt.input.rewind
|
203
|
+
value = prompt.enum_select("What letter?", choices, per_page: 4, default: 1)
|
204
|
+
expect(value).to eq('A')
|
205
|
+
|
206
|
+
expect(prompt.output.string).to eq([
|
207
|
+
"What letter? \n",
|
208
|
+
"\e[32m 1) A\e[0m\n",
|
209
|
+
" 2) B\n",
|
210
|
+
" 3) C\n",
|
211
|
+
" 4) D\n",
|
212
|
+
" Choose 1-4 [1]: ",
|
213
|
+
"\e[2K\e[1G\e[1A" * 5,
|
214
|
+
"\e[2K\e[1G\e[J",
|
215
|
+
"What letter? \e[32mA\e[0m\n"
|
216
|
+
].join)
|
217
|
+
end
|
218
|
+
|
182
219
|
it "shows pages matching input" do
|
183
220
|
prompt = TTY::TestPrompt.new
|
184
221
|
choices = %w(A B C D E F G H)
|
@@ -194,7 +231,8 @@ RSpec.describe TTY::Prompt do
|
|
194
231
|
" Choose 1-8 [1]: ",
|
195
232
|
"\n\e[90m(Press tab/right or left to reveal more choices)\e[0m",
|
196
233
|
"\e[A\e[1G\e[18C",
|
197
|
-
"\e[
|
234
|
+
"\e[2K\e[1G\e[1A" * 4,
|
235
|
+
"\e[2K\e[1G\e[J",
|
198
236
|
"What letter? \n",
|
199
237
|
"\e[32m 1) A\e[0m\n",
|
200
238
|
" 2) B\n",
|
@@ -202,7 +240,8 @@ RSpec.describe TTY::Prompt do
|
|
202
240
|
" Choose 1-8 [1]: 1",
|
203
241
|
"\n\e[90m(Press tab/right or left to reveal more choices)\e[0m",
|
204
242
|
"\e[A\e[1G\e[19C",
|
205
|
-
"\e[
|
243
|
+
"\e[2K\e[1G\e[1A" * 4,
|
244
|
+
"\e[2K\e[1G\e[J",
|
206
245
|
"What letter? \n",
|
207
246
|
"\e[32m 1) A\e[0m\n",
|
208
247
|
" 2) B\n",
|
@@ -210,7 +249,8 @@ RSpec.describe TTY::Prompt do
|
|
210
249
|
" Choose 1-8 [1]: 11",
|
211
250
|
"\n\e[90m(Press tab/right or left to reveal more choices)\e[0m",
|
212
251
|
"\e[A\e[1G\e[20C",
|
213
|
-
"\e[
|
252
|
+
"\e[2K\e[1G\e[1A" * 4,
|
253
|
+
"\e[2K\e[1G\e[J",
|
214
254
|
"What letter? \n",
|
215
255
|
"\e[32m 1) A\e[0m\n",
|
216
256
|
" 2) B\n",
|
@@ -219,7 +259,8 @@ RSpec.describe TTY::Prompt do
|
|
219
259
|
"\e[31m>>\e[0m Please enter a valid number",
|
220
260
|
"\n\e[90m(Press tab/right or left to reveal more choices)\e[0m",
|
221
261
|
"\e[A\e[1G\e[A\e[1G\e[18C",
|
222
|
-
"\e[
|
262
|
+
"\e[2K\e[1G\e[1A" * 4,
|
263
|
+
"\e[2K\e[1G\e[J",
|
223
264
|
"What letter? \n",
|
224
265
|
"\e[32m 1) A\e[0m\n",
|
225
266
|
" 2) B\n",
|
@@ -228,7 +269,8 @@ RSpec.describe TTY::Prompt do
|
|
228
269
|
"\e[31m>>\e[0m Please enter a valid number",
|
229
270
|
"\n\e[90m(Press tab/right or left to reveal more choices)\e[0m",
|
230
271
|
"\e[A\e[1G\e[A\e[1G\e[18C",
|
231
|
-
"\e[
|
272
|
+
"\e[2K\e[1G\e[1A" * 4,
|
273
|
+
"\e[2K\e[1G\e[J",
|
232
274
|
"What letter? \e[32mA\e[0m\n"
|
233
275
|
].join)
|
234
276
|
end
|
@@ -252,14 +294,16 @@ RSpec.describe TTY::Prompt do
|
|
252
294
|
" Choose 1-8 [4]: ",
|
253
295
|
"\n\e[90m(Press tab/right or left to reveal more choices)\e[0m",
|
254
296
|
"\e[A\e[1G\e[18C",
|
255
|
-
"\e[
|
297
|
+
"\e[2K\e[1G\e[1A" * 4,
|
298
|
+
"\e[2K\e[1G\e[J",
|
256
299
|
"What letter? \n",
|
257
300
|
" 7) G\n",
|
258
301
|
" 8) H\n",
|
259
302
|
" Choose 1-8 [4]: ",
|
260
303
|
"\n\e[90m(Press tab/right or left to reveal more choices)\e[0m",
|
261
304
|
"\e[A\e[1G\e[18C",
|
262
|
-
"\e[
|
305
|
+
"\e[2K\e[1G\e[1A" * 3,
|
306
|
+
"\e[2K\e[1G\e[J",
|
263
307
|
"What letter? \e[32mD\e[0m\n"
|
264
308
|
].join)
|
265
309
|
end
|
data/spec/unit/expand_spec.rb
CHANGED
@@ -37,7 +37,7 @@ RSpec.describe TTY::Prompt, '#expand' do
|
|
37
37
|
|
38
38
|
expect(prompt.output.string).to eq([
|
39
39
|
"Overwrite Gemfile? (enter \"h\" for help) [\e[32my\e[0m,n,a,d,q,h] ",
|
40
|
-
"\e[
|
40
|
+
"\e[2K\e[1G",
|
41
41
|
"Overwrite Gemfile? \e[32mOverwrite\e[0m\n"
|
42
42
|
].join)
|
43
43
|
end
|
@@ -51,7 +51,7 @@ RSpec.describe TTY::Prompt, '#expand' do
|
|
51
51
|
|
52
52
|
expect(prompt.output.string).to eq([
|
53
53
|
"Overwrite Gemfile? (enter \"h\" for help) [y,n,\e[32ma\e[0m,d,q,h] ",
|
54
|
-
"\e[
|
54
|
+
"\e[2K\e[1G",
|
55
55
|
"Overwrite Gemfile? \e[32mOverwrite all\e[0m\n"
|
56
56
|
].join)
|
57
57
|
end
|
@@ -65,14 +65,14 @@ RSpec.describe TTY::Prompt, '#expand' do
|
|
65
65
|
|
66
66
|
expect(prompt.output.string).to eq([
|
67
67
|
"Overwrite Gemfile? (enter \"h\" for help) [\e[32my\e[0m,n,a,d,q,h] ",
|
68
|
-
"\e[
|
68
|
+
"\e[2K\e[1G",
|
69
69
|
"Overwrite Gemfile? (enter \"h\" for help) [y,n,\e[32ma\e[0m,d,q,h] ",
|
70
70
|
"a\n",
|
71
71
|
"\e[32m>> \e[0mOverwrite all",
|
72
72
|
"\e[A\e[1G\e[55C",
|
73
|
-
"\e[
|
73
|
+
"\e[2K\e[1G",
|
74
74
|
"\e[1B",
|
75
|
-
"\e[
|
75
|
+
"\e[2K\e[1G",
|
76
76
|
"\e[A\e[1G",
|
77
77
|
"Overwrite Gemfile? \e[32mOverwrite all\e[0m\n"
|
78
78
|
].join)
|
@@ -87,13 +87,13 @@ RSpec.describe TTY::Prompt, '#expand' do
|
|
87
87
|
|
88
88
|
expect(prompt.output.string).to eq([
|
89
89
|
"Overwrite Gemfile? (enter \"h\" for help) [\e[32my\e[0m,n,a,d,q,h] ",
|
90
|
-
"\e[
|
90
|
+
"\e[2K\e[1G",
|
91
91
|
"Overwrite Gemfile? (enter \"h\" for help) [y,n,a,d,q,\e[32mh\e[0m] h\n",
|
92
92
|
"\e[32m>> \e[0mprint help",
|
93
93
|
"\e[A\e[1G\e[55C",
|
94
|
-
"\e[
|
94
|
+
"\e[2K\e[1G",
|
95
95
|
"\e[1B",
|
96
|
-
"\e[
|
96
|
+
"\e[2K\e[1G",
|
97
97
|
"\e[A\e[1G",
|
98
98
|
"Overwrite Gemfile? \n",
|
99
99
|
" y - Overwrite\n",
|
@@ -103,8 +103,8 @@ RSpec.describe TTY::Prompt, '#expand' do
|
|
103
103
|
" q - Quit\n",
|
104
104
|
" h - print help\n",
|
105
105
|
" Choice [y]: ",
|
106
|
-
"\e[
|
107
|
-
"\e[
|
106
|
+
"\e[2K\e[1G\e[1A" * 7,
|
107
|
+
"\e[2K\e[1G",
|
108
108
|
"Overwrite Gemfile? \n",
|
109
109
|
" y - Overwrite\n",
|
110
110
|
" n - Skip\n",
|
@@ -113,8 +113,8 @@ RSpec.describe TTY::Prompt, '#expand' do
|
|
113
113
|
" q - Quit\n",
|
114
114
|
" h - print help\n",
|
115
115
|
" Choice [y]: d",
|
116
|
-
"\e[
|
117
|
-
"\e[
|
116
|
+
"\e[2K\e[1G\e[1A" * 7,
|
117
|
+
"\e[2K\e[1G",
|
118
118
|
"Overwrite Gemfile? \e[32mShow diff\e[0m\n",
|
119
119
|
].join)
|
120
120
|
end
|
@@ -137,7 +137,7 @@ RSpec.describe TTY::Prompt, '#expand' do
|
|
137
137
|
|
138
138
|
expect(prompt.output.string).to eq([
|
139
139
|
"Overwrite Gemfile? (enter \"h\" for help) [y,n,a,\e[32md\e[0m,q,h] ",
|
140
|
-
"\e[
|
140
|
+
"\e[2K\e[1G",
|
141
141
|
"Overwrite Gemfile? \e[32mShow diff\e[0m\n"
|
142
142
|
].join)
|
143
143
|
end
|
@@ -158,7 +158,7 @@ RSpec.describe TTY::Prompt, '#expand' do
|
|
158
158
|
|
159
159
|
expect(prompt.output.string).to eq([
|
160
160
|
"Overwrite Gemfile? (enter \"h\" for help) [\e[32my\e[0m,n,a,d,q,h] ",
|
161
|
-
"\e[
|
161
|
+
"\e[2K\e[1G",
|
162
162
|
"Overwrite Gemfile? \e[32mOverwrite\e[0m\n"
|
163
163
|
].join)
|
164
164
|
end
|