tty-prompt 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +9 -6
- data/CHANGELOG.md +40 -3
- data/Gemfile +0 -1
- data/README.md +246 -65
- data/examples/ask.rb +7 -0
- data/examples/echo.rb +7 -0
- data/examples/in.rb +7 -0
- data/examples/mask.rb +9 -0
- data/examples/multi_select.rb +8 -0
- data/examples/select.rb +8 -0
- data/examples/validation.rb +9 -0
- data/examples/yes_no.rb +7 -0
- data/lib/tty-prompt.rb +6 -4
- data/lib/tty/prompt.rb +100 -25
- data/lib/tty/prompt/choice.rb +1 -1
- data/lib/tty/prompt/converter_dsl.rb +19 -0
- data/lib/tty/prompt/converter_registry.rb +56 -0
- data/lib/tty/prompt/converters.rb +77 -0
- data/lib/tty/prompt/evaluator.rb +29 -0
- data/lib/tty/prompt/list.rb +38 -36
- data/lib/tty/prompt/mask_question.rb +85 -0
- data/lib/tty/prompt/multi_list.rb +21 -32
- data/lib/tty/prompt/question.rb +184 -162
- data/lib/tty/prompt/question/checks.rb +85 -0
- data/lib/tty/prompt/question/modifier.rb +4 -5
- data/lib/tty/prompt/question/validation.rb +29 -35
- data/lib/tty/prompt/reader.rb +98 -52
- data/lib/tty/prompt/reader/codes.rb +63 -0
- data/lib/tty/prompt/reader/key_event.rb +67 -0
- data/lib/tty/prompt/reader/mode.rb +66 -0
- data/lib/tty/prompt/reader/mode/echo.rb +43 -0
- data/lib/tty/prompt/reader/mode/raw.rb +43 -0
- data/lib/tty/prompt/result.rb +42 -0
- data/lib/tty/prompt/statement.rb +9 -14
- data/lib/tty/prompt/suggestion.rb +4 -2
- data/lib/tty/prompt/symbols.rb +13 -0
- data/lib/tty/prompt/test.rb +3 -2
- data/lib/tty/prompt/utils.rb +1 -1
- data/lib/tty/prompt/version.rb +1 -1
- data/spec/unit/ask_spec.rb +31 -48
- data/spec/unit/choice/eql_spec.rb +0 -2
- data/spec/unit/choice/from_spec.rb +0 -2
- data/spec/unit/choices/add_spec.rb +0 -2
- data/spec/unit/choices/each_spec.rb +0 -2
- data/spec/unit/choices/new_spec.rb +0 -2
- data/spec/unit/choices/pluck_spec.rb +0 -2
- data/spec/unit/converters/convert_bool_spec.rb +58 -0
- data/spec/unit/{response/read_char_spec.rb → converters/convert_char_spec.rb} +2 -4
- data/spec/unit/converters/convert_custom_spec.rb +14 -0
- data/spec/unit/converters/convert_date_spec.rb +25 -0
- data/spec/unit/converters/convert_file_spec.rb +14 -0
- data/spec/unit/{response/read_number_spec.rb → converters/convert_number_spec.rb} +5 -7
- data/spec/unit/converters/convert_path_spec.rb +15 -0
- data/spec/unit/{response/read_range_spec.rb → converters/convert_range_spec.rb} +3 -5
- data/spec/unit/converters/convert_regex_spec.rb +12 -0
- data/spec/unit/converters/convert_string_spec.rb +21 -0
- data/spec/unit/distance/distance_spec.rb +0 -2
- data/spec/unit/error_spec.rb +0 -6
- data/spec/unit/evaluator_spec.rb +67 -0
- data/spec/unit/keypress_spec.rb +19 -0
- data/spec/unit/mask_spec.rb +95 -0
- data/spec/unit/multi_select_spec.rb +36 -24
- data/spec/unit/multiline_spec.rb +19 -0
- data/spec/unit/new_spec.rb +18 -0
- data/spec/unit/ok_spec.rb +10 -0
- data/spec/unit/question/default_spec.rb +17 -4
- data/spec/unit/question/echo_spec.rb +31 -0
- data/spec/unit/question/in_spec.rb +48 -16
- data/spec/unit/question/initialize_spec.rb +2 -9
- data/spec/unit/question/modifier/apply_to_spec.rb +9 -16
- data/spec/unit/question/modifier/letter_case_spec.rb +0 -2
- data/spec/unit/question/modifier/whitespace_spec.rb +12 -20
- data/spec/unit/question/modify_spec.rb +3 -7
- data/spec/unit/question/required_spec.rb +20 -14
- data/spec/unit/question/validate_spec.rb +20 -19
- data/spec/unit/question/validation/call_spec.rb +15 -6
- data/spec/unit/question/validation/coerce_spec.rb +17 -11
- data/spec/unit/reader/publish_keypress_event_spec.rb +81 -0
- data/spec/unit/reader/read_keypress_spec.rb +22 -0
- data/spec/unit/reader/read_line_spec.rb +31 -0
- data/spec/unit/reader/read_multiline_spec.rb +37 -0
- data/spec/unit/result_spec.rb +40 -0
- data/spec/unit/say_spec.rb +18 -23
- data/spec/unit/select_spec.rb +37 -32
- data/spec/unit/statement/initialize_spec.rb +4 -4
- data/spec/unit/suggest_spec.rb +0 -2
- data/spec/unit/warn_spec.rb +0 -5
- data/spec/unit/yes_no_spec.rb +70 -0
- data/tty-prompt.gemspec +7 -4
- metadata +123 -40
- data/lib/tty/prompt/codes.rb +0 -32
- data/lib/tty/prompt/cursor.rb +0 -131
- data/lib/tty/prompt/error.rb +0 -26
- data/lib/tty/prompt/mode.rb +0 -64
- data/lib/tty/prompt/mode/echo.rb +0 -41
- data/lib/tty/prompt/mode/raw.rb +0 -41
- data/lib/tty/prompt/response.rb +0 -247
- data/lib/tty/prompt/response_delegation.rb +0 -42
- data/spec/unit/cursor/new_spec.rb +0 -74
- data/spec/unit/question/character_spec.rb +0 -13
- data/spec/unit/reader/getc_spec.rb +0 -42
- data/spec/unit/response/read_bool_spec.rb +0 -58
- data/spec/unit/response/read_date_spec.rb +0 -16
- data/spec/unit/response/read_email_spec.rb +0 -45
- data/spec/unit/response/read_multiple_spec.rb +0 -21
- data/spec/unit/response/read_spec.rb +0 -69
- data/spec/unit/response/read_string_spec.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6c43cfd17fb7fe5d5f256f124571fb904a3d6b3
|
4
|
+
data.tar.gz: 0cc290a7c31157fe9d953133ce2f7a3df5042142
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b20f2aa8fab1798c62b8e5a9770351ab58fcf6de0afbbf7a60eba88c31e0b551273cd706944a3e17e3b6e1f6f1366d5e0d60f8c61b638c28dc6e9f0b657b9aac
|
7
|
+
data.tar.gz: 6f2be862205c779ba31d2651b4e9d7874d5df4a4566218e0793224215db197900dc930022940418f04fb7427948036928897e7384f65570f5d741f05b7f405e8
|
data/.travis.yml
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
+
---
|
1
2
|
language: ruby
|
3
|
+
sudo: false
|
4
|
+
cache: bundler
|
2
5
|
bundler_args: --without yard benchmarks
|
3
6
|
script: "bundle exec rake ci"
|
4
7
|
rvm:
|
@@ -7,13 +10,13 @@ rvm:
|
|
7
10
|
- 2.1
|
8
11
|
- 2.2
|
9
12
|
- ruby-head
|
13
|
+
- jruby-19mode
|
14
|
+
- jruby
|
15
|
+
- rbx-2
|
16
|
+
env:
|
17
|
+
global:
|
18
|
+
- JRUBY_OPTS="-Xcli.debug=true --debug"
|
10
19
|
matrix:
|
11
|
-
include:
|
12
|
-
- rvm: jruby-19mode
|
13
|
-
- rvm: jruby-20mode
|
14
|
-
- rvm: jruby-21mode
|
15
|
-
- rvm: jruby-head
|
16
|
-
- rvm: rbx-2
|
17
20
|
allow_failures:
|
18
21
|
- rvm: ruby-head
|
19
22
|
- rvm: jruby-head
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,49 @@
|
|
1
|
-
|
1
|
+
# Change log
|
2
2
|
|
3
|
+
## [v0.3.0] - 2015-12-28
|
4
|
+
|
5
|
+
### Added
|
6
|
+
* Add prefix option to prompt to customize #ask, #select, #multi_select
|
7
|
+
* Add default printing to #ask
|
8
|
+
* Add #yes?/#no? boolean queries
|
9
|
+
* Add Evaluator and Result for validation checking to Question
|
10
|
+
* Add ability for #ask to display error messages on failed validation
|
11
|
+
* Add ability to specify in-built names for validation e.i. :email
|
12
|
+
* Add KeyEvent for keyboard events publishing to Reader
|
13
|
+
* Add #read_multiline to Reader
|
14
|
+
* Add :convert option for ask configuration
|
15
|
+
* Add ability to specify custom proc converters
|
16
|
+
* Add #ask_keypress to gather character input
|
17
|
+
* Add #ask_multiline to gather multiline input
|
18
|
+
* Add MaskedQuestion & #mask method for masking input stream characters
|
19
|
+
|
20
|
+
### Changed
|
21
|
+
* Change Reader#read_keypress to be robust and read correctly byte sequences
|
22
|
+
* Change Reader#getc to #read_line and extend arguments with echo option
|
23
|
+
* Extract cursor movement to dependency tty-cursor
|
24
|
+
* Change List & MultiList to subscribe to keyboard events
|
25
|
+
* Change to move mode inside reader namespace
|
26
|
+
* Remove Response & Error objects
|
27
|
+
* Remove :char option from #ask
|
28
|
+
* Change :read option to specify mode of reading out of :line, :multiline, :keypress
|
29
|
+
* Rename #confirm to #ok
|
30
|
+
|
31
|
+
## [v0.2.0] - 2015-11-23
|
32
|
+
|
33
|
+
### Added
|
3
34
|
* Add ability to select choice form list #select
|
4
35
|
* Add ability to select multiple options #multi_select
|
36
|
+
* Add :read option to #ask for reading specific type input
|
37
|
+
|
38
|
+
### Changed
|
5
39
|
* Change #ask api to be similar to #select and #multi_select behaviour
|
6
40
|
* Change #ask :argument option to be :required
|
7
|
-
* Add :read option to #ask for reading specific type input
|
8
41
|
* Remove :valid option from #ask as #select is a better solution
|
9
42
|
|
10
|
-
|
43
|
+
## [v0.1.0] - 2015-11-01
|
11
44
|
|
12
45
|
* Initial implementation and release
|
46
|
+
|
47
|
+
[v0.3.0]: https://github.com/peter-murach/tty-prompt/compare/v0.2.0...v0.3.0
|
48
|
+
[v0.2.0]: https://github.com/peter-murach/tty-prompt/compare/v0.1.0...v0.2.0
|
49
|
+
[v0.1.0]: https://github.com/peter-murach/tty-prompt/compare/v0.1.0
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -41,12 +41,25 @@ Or install it yourself as:
|
|
41
41
|
* [1. Usage](#1-usage)
|
42
42
|
* [2. Interface](#2-interface)
|
43
43
|
* [2.1 ask](#21-ask)
|
44
|
-
|
45
|
-
* [2.1
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
44
|
+
* [2.2 settings](#22-settings)
|
45
|
+
* [2.2.1 convert](#221-convert)
|
46
|
+
* [2.2.2 default](#222-default)
|
47
|
+
* [2.2.3 echo](#223-echo)
|
48
|
+
* [2.2.4 in](#224-in)
|
49
|
+
* [2.2.5 modify](#225-modify)
|
50
|
+
* [2.2.6 required](#226-required)
|
51
|
+
* [2.2.7 validate](#227-validate)
|
52
|
+
* [2.3 keypress](#23-keypress)
|
53
|
+
* [2.4 multiline](#24-multiline)
|
54
|
+
* [2.5 mask](#25-mask)
|
55
|
+
* [2.6 yes?/no?](#26-yesno)
|
56
|
+
* [2.7 select](#27-select)
|
57
|
+
* [2.8 multi_select](#28-multi_select)
|
58
|
+
* [2.9 suggest](#29-suggest)
|
59
|
+
* [2.10 say](#210-say)
|
60
|
+
* [2.11 ok](#211-ok)
|
61
|
+
* [2.12 warn](#212-warn)
|
62
|
+
* [2.13 error](#213-warn)
|
50
63
|
|
51
64
|
## 1. Usage
|
52
65
|
|
@@ -59,7 +72,22 @@ prompt = TTY::Prompt.new
|
|
59
72
|
and then call `ask` with the question for simple input:
|
60
73
|
|
61
74
|
```ruby
|
62
|
-
prompt.ask('
|
75
|
+
prompt.ask('What is your name?', default: ENV['USER'])
|
76
|
+
# => What is your name? (piotr)
|
77
|
+
```
|
78
|
+
|
79
|
+
To confirm input use `yes?`:
|
80
|
+
|
81
|
+
```ruby
|
82
|
+
prompt.yes?('Do you like Ruby?')
|
83
|
+
# => Do you like Ruby? (Y/n)
|
84
|
+
```
|
85
|
+
|
86
|
+
If you want to input password or secret information use `mask`:
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
prompt.mask("What is your secret?")
|
90
|
+
# => What is your secret? ••••
|
63
91
|
```
|
64
92
|
|
65
93
|
Asking question with list of options couldn't be easier using `select` like so:
|
@@ -92,13 +120,13 @@ prompt.select("Select drinks?", choices)
|
|
92
120
|
|
93
121
|
### 2.1 ask
|
94
122
|
|
95
|
-
In order to ask a basic question
|
123
|
+
In order to ask a basic question do:
|
96
124
|
|
97
125
|
```ruby
|
98
|
-
|
126
|
+
prompt.ask("What is your name?")
|
99
127
|
```
|
100
128
|
|
101
|
-
|
129
|
+
However, to prompt for more complex input you can use robust API by passing hash of properties or using a block like so:
|
102
130
|
|
103
131
|
```ruby
|
104
132
|
prompt.ask("What is your name?") do |q|
|
@@ -108,66 +136,199 @@ prompt.ask("What is your name?") do |q|
|
|
108
136
|
end
|
109
137
|
```
|
110
138
|
|
111
|
-
|
139
|
+
### 2.2 settings
|
112
140
|
|
113
|
-
Below is a list of the settings that may be used for customizing `ask`
|
141
|
+
Below is a list of the settings that may be used for customizing `ask`, `mask`, `multiline`, `keypress` methods behaviour:
|
114
142
|
|
115
143
|
```ruby
|
116
|
-
|
117
|
-
default # default value used if none is provided
|
118
|
-
echo # turn echo on and off (default: true)
|
119
|
-
in # specify range '0-9', '0..9', '0...9' or negative '-1..-9'
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
required # If true, value entered must be non-empty (default: false)
|
124
|
-
validate # regex, proc against which stdin input is checked
|
144
|
+
:convert # conversion applied to input such as :bool or proc
|
145
|
+
:default # default value used if none is provided
|
146
|
+
:echo # turn echo on and off (default: true)
|
147
|
+
:in # specify range '0-9', '0..9', '0...9' or negative '-1..-9'
|
148
|
+
:modify # apply answer modification :upcase, :downcase, :trim, :chomp etc..
|
149
|
+
:required # If true, value entered must be non-empty (default: false)
|
150
|
+
:validate # regex, proc against which input is checked
|
125
151
|
```
|
126
152
|
|
127
|
-
|
153
|
+
#### 2.2.1 convert
|
128
154
|
|
129
|
-
|
130
|
-
prompt.ask('What is your username?') { |q|
|
131
|
-
q.validate { |input| input =~ (/^[^\.]+\.[^\.]+/) }
|
132
|
-
}
|
133
|
-
```
|
134
|
-
|
135
|
-
For example, if we wanted to ask a user for a single digit in given range
|
136
|
-
|
137
|
-
```ruby
|
138
|
-
ask("Provide number in range: 0-9") { |q| q.in('0-9') }
|
139
|
-
```
|
140
|
-
|
141
|
-
#### 2.1.2 valid read keywords
|
142
|
-
|
143
|
-
The most common thing to do is to cast the answer to specific type. The `read` property is used for that. By default `:string` answer is assumed but this can be changed using one of the following custom readers:
|
155
|
+
The `convert` property is used to convert input to a required type. By default no conversion is performed. The following conversions are provided:
|
144
156
|
|
145
157
|
```ruby
|
146
158
|
:bool # true or false for strings such as "Yes", "No"
|
147
|
-
:char # first character
|
148
159
|
:date # date type
|
149
160
|
:datetime # datetime type
|
150
|
-
:
|
151
|
-
:file # a File object
|
161
|
+
:file # File object
|
152
162
|
:float # decimal or error if cannot convert
|
153
163
|
:int # integer or error if cannot convert
|
154
|
-
:
|
155
|
-
:password # string with echo turned off
|
164
|
+
:path # Pathname object
|
156
165
|
:range # range type
|
157
|
-
:
|
166
|
+
:regexp # regex expression
|
158
167
|
:string # string
|
159
168
|
:symbol # symbol
|
160
|
-
:text # multiline string
|
161
|
-
:keypress # the key pressed
|
162
169
|
```
|
163
170
|
|
164
171
|
For example, if you are interested in range type as answer do the following:
|
165
172
|
|
166
173
|
```ruby
|
167
|
-
ask("Provide range of numbers?",
|
174
|
+
prompt.ask("Provide range of numbers?", convert: :range)
|
175
|
+
# Provide range of numbers? 1-10
|
176
|
+
# => 1..10
|
177
|
+
```
|
178
|
+
|
179
|
+
You can also provide a custom conversion like so:
|
180
|
+
|
181
|
+
```ruby
|
182
|
+
prompt.ask('Ingredients? (comma sep list)') do |q|
|
183
|
+
q.convert -> (input) { input.split(/,\s*/) }
|
184
|
+
end
|
185
|
+
# Ingredients? (comma sep list) milk, eggs, flour
|
186
|
+
# => ['milk', 'eggs', 'flour']
|
187
|
+
```
|
188
|
+
|
189
|
+
#### 2.2.2 default
|
190
|
+
|
191
|
+
The `:default` option is used if the user presses return key:
|
192
|
+
|
193
|
+
```ruby
|
194
|
+
prompt.ask('What is your name?', default: 'Anonymous')
|
195
|
+
# =>
|
196
|
+
# What is your name? (Anonymous)
|
197
|
+
```
|
198
|
+
|
199
|
+
#### 2.2.3 echo
|
200
|
+
|
201
|
+
To control whether the input is shown back in terminal or not use `:echo` option like so:
|
202
|
+
|
203
|
+
```ruby
|
204
|
+
prompt.ask('password:', echo: false)
|
205
|
+
```
|
206
|
+
|
207
|
+
#### 2.2.4 in
|
208
|
+
|
209
|
+
In order to check that provided input falls inside a range of inputs use the `in` option. For example, if we wanted to ask a user for a single digit in given range we may do following:
|
210
|
+
|
211
|
+
```ruby
|
212
|
+
ask("Provide number in range: 0-9?") { |q| q.in('0-9') }
|
213
|
+
```
|
214
|
+
|
215
|
+
#### 2.2.5 modify
|
216
|
+
|
217
|
+
Set the `:modify` option if you want to handle whitespace or letter capitalization.
|
218
|
+
|
219
|
+
```ruby
|
220
|
+
prompt.ask('Enter text:') do |q|
|
221
|
+
q.modify :strip, :collapse
|
222
|
+
end
|
223
|
+
```
|
224
|
+
|
225
|
+
Available letter casing settings are:
|
226
|
+
```ruby
|
227
|
+
:up # change to small case
|
228
|
+
:down # change to upper case
|
229
|
+
:capitalize # capitalize each word
|
230
|
+
```
|
231
|
+
|
232
|
+
Available whitespace settings are:
|
233
|
+
```ruby
|
234
|
+
:trim # remove whitespace from both ends of the input
|
235
|
+
:chomp # remove whitespace at the end of input
|
236
|
+
:collapse # reduce all whitespace to single character
|
237
|
+
:remove # remove all whitespace
|
238
|
+
```
|
239
|
+
|
240
|
+
#### 2.2.6 required
|
241
|
+
|
242
|
+
To ensure that input is provided use `:required` option:
|
243
|
+
|
244
|
+
```ruby
|
245
|
+
prompt.ask("What's your phone number?", required: true)
|
246
|
+
# What's your phone number?
|
247
|
+
# >> No value provided for required
|
248
|
+
```
|
249
|
+
|
250
|
+
#### 2.2.7 validate
|
251
|
+
|
252
|
+
In order to validate that input matches a given patter you can pass the `validate` option. Validate setting accepts `Regex`, `Proc` or `Symbol`.
|
253
|
+
|
254
|
+
```ruby
|
255
|
+
prompt.ask('What is your username?') do |q|
|
256
|
+
q.validate /^[^\.]+\.[^\.]+/
|
257
|
+
end
|
258
|
+
```
|
259
|
+
|
260
|
+
The **TTY::Prompt** comes with bult-in validations for `:email` and you can use them directly like so:
|
261
|
+
|
262
|
+
```prompt
|
263
|
+
prompt.ask('What is your email?') { |q| q.validate :email }
|
264
|
+
```
|
265
|
+
|
266
|
+
### 2.3 keypress
|
267
|
+
|
268
|
+
In order to ask question with a single character or keypress answer use `ask_keypress`:
|
269
|
+
|
270
|
+
```ruby
|
271
|
+
prompt.ask_keypress("Which one do you prefer a, b, c or d ?")
|
168
272
|
```
|
169
273
|
|
170
|
-
### 2.
|
274
|
+
### 2.4 multiline
|
275
|
+
|
276
|
+
Asking for multiline input can be done with `ask_multiline` method.
|
277
|
+
|
278
|
+
```ruby
|
279
|
+
prompt.ask_multiline("Provide description?")
|
280
|
+
```
|
281
|
+
|
282
|
+
The reading of input will terminate when empty line is submitted.
|
283
|
+
|
284
|
+
|
285
|
+
### 2.5 mask
|
286
|
+
|
287
|
+
If you require input of confidential information use `mask` method. By default each character that is printed is replaced by `•` symbol. All configuration options applicable to `ask` method can be used with `mask` as well.
|
288
|
+
|
289
|
+
```ruby
|
290
|
+
prompt.mask('What is your secret?')
|
291
|
+
# => What is your secret? ••••
|
292
|
+
```
|
293
|
+
|
294
|
+
The masking character can be changed by passing `:mask` option:
|
295
|
+
|
296
|
+
```ruby
|
297
|
+
prompt.mask('What is your secret?', mask: '\u2665')
|
298
|
+
# => What is your secret? ♥♥♥♥♥
|
299
|
+
```
|
300
|
+
|
301
|
+
If you don't wish to show any output use `:echo` option like so:
|
302
|
+
|
303
|
+
```ruby
|
304
|
+
prompt.mask('What is your secret?', echo: false)
|
305
|
+
```
|
306
|
+
|
307
|
+
### 2.6 yes?/no?
|
308
|
+
|
309
|
+
In order to display a query asking for boolean input from user use `yes?` like so:
|
310
|
+
|
311
|
+
```ruby
|
312
|
+
prompt.yes?('Do you like Ruby?')
|
313
|
+
# =>
|
314
|
+
# Do you like Ruby? (Y/n)
|
315
|
+
```
|
316
|
+
|
317
|
+
the same can be achieved by using plain `ask`:
|
318
|
+
|
319
|
+
```ruby
|
320
|
+
prompt.ask('Do you like Ruby? (Y/n)', convert: :bool)
|
321
|
+
```
|
322
|
+
|
323
|
+
There is also the opposite for asking confirmation of negative option:
|
324
|
+
|
325
|
+
```ruby
|
326
|
+
prompt.no?('Do you hate Ruby?')
|
327
|
+
# =>
|
328
|
+
# Do you like Ruby? (y/N)
|
329
|
+
```
|
330
|
+
|
331
|
+
### 2.7 select
|
171
332
|
|
172
333
|
For asking questions involving list of options use `select` method by passing the question and possible choices:
|
173
334
|
|
@@ -246,7 +407,7 @@ prompt.select("Choose your destiny?", choices, help: "(Bash keyboard)")
|
|
246
407
|
# Jax
|
247
408
|
```
|
248
409
|
|
249
|
-
### 2.
|
410
|
+
### 2.8 multi_select
|
250
411
|
|
251
412
|
For asking questions involving multiple selection list use `multi_select` method by passing the question and possible choices:
|
252
413
|
|
@@ -312,23 +473,7 @@ And when you press enter you will see the following selected:
|
|
312
473
|
# => [{score: 20}, {score: 50}]
|
313
474
|
```
|
314
475
|
|
315
|
-
### 2.
|
316
|
-
|
317
|
-
To simply print message out to stdout use `say` like so:
|
318
|
-
|
319
|
-
```ruby
|
320
|
-
prompt.say(...) # print message to stdout
|
321
|
-
```
|
322
|
-
|
323
|
-
**TTY::Prompt** provides more specific versions of `say` method to better express intenation behind the message:
|
324
|
-
|
325
|
-
```ruby
|
326
|
-
prompt.confirm # print message(s) in green
|
327
|
-
prompt.warn # print message(s) in yellow
|
328
|
-
prompt.error # print message(s) in red
|
329
|
-
```
|
330
|
-
|
331
|
-
### 2.5 suggest
|
476
|
+
### 2.9 suggest
|
332
477
|
|
333
478
|
To suggest possible matches for the user input use `suggest` method like so:
|
334
479
|
|
@@ -350,6 +495,42 @@ prompt.suggest('b', possible, indent: 4, single_text: 'Perhaps you meant?')
|
|
350
495
|
# blame
|
351
496
|
```
|
352
497
|
|
498
|
+
### 2.10 say
|
499
|
+
|
500
|
+
To simply print message out to stdout use `say` like so:
|
501
|
+
|
502
|
+
```ruby
|
503
|
+
prompt.say(...)
|
504
|
+
```
|
505
|
+
|
506
|
+
The `say` method also accepts option `:color` which supports all the colors provided by [pastel](https://github.com/peter-murach/pastel#3-supported-colors)
|
507
|
+
|
508
|
+
**TTY::Prompt** provides more specific versions of `say` method to better express intenation behind the message such as `ok`, `warn` and `error`.
|
509
|
+
|
510
|
+
### 2.11 ok
|
511
|
+
|
512
|
+
Print message(s) in green do:
|
513
|
+
|
514
|
+
```ruby
|
515
|
+
prompt.ok(...)
|
516
|
+
```
|
517
|
+
|
518
|
+
### 2.12 warn
|
519
|
+
|
520
|
+
Print message(s) in yellow do:
|
521
|
+
|
522
|
+
```ruby
|
523
|
+
prompt.warn(...)
|
524
|
+
```
|
525
|
+
|
526
|
+
### 2.13 error
|
527
|
+
|
528
|
+
Print message(s) in red do:
|
529
|
+
|
530
|
+
```ruby
|
531
|
+
prompt.error(...)
|
532
|
+
```
|
533
|
+
|
353
534
|
## Contributing
|
354
535
|
|
355
536
|
1. Fork it ( https://github.com/peter-murach/tty-prompt/fork )
|