tty-prompt 0.12.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -3
  3. data/CHANGELOG.md +12 -0
  4. data/README.md +3 -3
  5. data/appveyor.yml +2 -0
  6. data/lib/tty/prompt/keypress.rb +7 -4
  7. data/lib/tty/prompt/reader.rb +1 -1
  8. data/lib/tty/prompt/reader/win_api.rb +14 -0
  9. data/lib/tty/prompt/reader/win_console.rb +9 -2
  10. data/lib/tty/prompt/timeout.rb +44 -23
  11. data/lib/tty/prompt/version.rb +1 -1
  12. data/tty-prompt.gemspec +6 -3
  13. metadata +21 -131
  14. data/spec/spec_helper.rb +0 -45
  15. data/spec/unit/ask_spec.rb +0 -132
  16. data/spec/unit/choice/eql_spec.rb +0 -22
  17. data/spec/unit/choice/from_spec.rb +0 -29
  18. data/spec/unit/choices/add_spec.rb +0 -12
  19. data/spec/unit/choices/each_spec.rb +0 -13
  20. data/spec/unit/choices/find_by_spec.rb +0 -10
  21. data/spec/unit/choices/new_spec.rb +0 -10
  22. data/spec/unit/choices/pluck_spec.rb +0 -9
  23. data/spec/unit/collect_spec.rb +0 -33
  24. data/spec/unit/converters/convert_bool_spec.rb +0 -58
  25. data/spec/unit/converters/convert_char_spec.rb +0 -11
  26. data/spec/unit/converters/convert_custom_spec.rb +0 -14
  27. data/spec/unit/converters/convert_date_spec.rb +0 -34
  28. data/spec/unit/converters/convert_file_spec.rb +0 -17
  29. data/spec/unit/converters/convert_number_spec.rb +0 -39
  30. data/spec/unit/converters/convert_path_spec.rb +0 -18
  31. data/spec/unit/converters/convert_range_spec.rb +0 -22
  32. data/spec/unit/converters/convert_regex_spec.rb +0 -12
  33. data/spec/unit/converters/convert_string_spec.rb +0 -21
  34. data/spec/unit/converters/on_error_spec.rb +0 -9
  35. data/spec/unit/distance/distance_spec.rb +0 -73
  36. data/spec/unit/enum_paginator_spec.rb +0 -65
  37. data/spec/unit/enum_select_spec.rb +0 -310
  38. data/spec/unit/error_spec.rb +0 -20
  39. data/spec/unit/evaluator_spec.rb +0 -67
  40. data/spec/unit/expand_spec.rb +0 -198
  41. data/spec/unit/keypress_spec.rb +0 -58
  42. data/spec/unit/mask_spec.rb +0 -132
  43. data/spec/unit/multi_select_spec.rb +0 -319
  44. data/spec/unit/multiline_spec.rb +0 -77
  45. data/spec/unit/new_spec.rb +0 -20
  46. data/spec/unit/ok_spec.rb +0 -10
  47. data/spec/unit/paginator_spec.rb +0 -63
  48. data/spec/unit/question/checks_spec.rb +0 -97
  49. data/spec/unit/question/default_spec.rb +0 -31
  50. data/spec/unit/question/echo_spec.rb +0 -38
  51. data/spec/unit/question/in_spec.rb +0 -115
  52. data/spec/unit/question/initialize_spec.rb +0 -12
  53. data/spec/unit/question/modifier/apply_to_spec.rb +0 -24
  54. data/spec/unit/question/modifier/letter_case_spec.rb +0 -41
  55. data/spec/unit/question/modifier/whitespace_spec.rb +0 -51
  56. data/spec/unit/question/modify_spec.rb +0 -41
  57. data/spec/unit/question/required_spec.rb +0 -92
  58. data/spec/unit/question/validate_spec.rb +0 -115
  59. data/spec/unit/question/validation/call_spec.rb +0 -31
  60. data/spec/unit/question/validation/coerce_spec.rb +0 -30
  61. data/spec/unit/reader/history_spec.rb +0 -172
  62. data/spec/unit/reader/key_event_spec.rb +0 -86
  63. data/spec/unit/reader/line_spec.rb +0 -110
  64. data/spec/unit/reader/publish_keypress_event_spec.rb +0 -94
  65. data/spec/unit/reader/read_keypress_spec.rb +0 -80
  66. data/spec/unit/reader/read_line_spec.rb +0 -68
  67. data/spec/unit/reader/read_multiline_spec.rb +0 -60
  68. data/spec/unit/result_spec.rb +0 -40
  69. data/spec/unit/say_spec.rb +0 -67
  70. data/spec/unit/select_spec.rb +0 -359
  71. data/spec/unit/slider_spec.rb +0 -96
  72. data/spec/unit/statement/initialize_spec.rb +0 -15
  73. data/spec/unit/suggest_spec.rb +0 -28
  74. data/spec/unit/warn_spec.rb +0 -21
  75. data/spec/unit/yes_no_spec.rb +0 -235
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7c73bc3ac5978ca2ec1610fee367e6e04e66c0ec
4
- data.tar.gz: 3350a73010eb30efd4494799ff5a6e8437115a42
3
+ metadata.gz: 9160061443d7a4ab50c00c9684f6db737d60edaf
4
+ data.tar.gz: f83459eb7604c90e7ba32694338204bc0b0ada16
5
5
  SHA512:
6
- metadata.gz: cd4716769f48d957e8ef5f4167a231d042126ab565267697b3541cd150629c669079275c1cdf66b7d3bba60b02d0b800458d3b84d1f0d0fa26c3c7cce202b709
7
- data.tar.gz: 003c09c9afe7d9f3e3b6014bc5352150f49a1609827c637342605f34fcbbac59f0a913b6d20f68cad8b698387b720c00f3025ab3a1fa30984b226adaada07f1f
6
+ metadata.gz: 5c858da34bb58566bf958d685f7431eefdb3f369736412798cdc1d3c7048908e7b49e00b0ad47164e77a6f8729c78ce3b804eb9b563fbc25ffa920577fc7cedd
7
+ data.tar.gz: 6457ad7692bd6c47bfce3e4e25bc2b8a14ff664f9c60a4b5e4e34e24b39c65a7b43edc95dde183e70f2e2d54494bc5c2df6efff2df272d2f841b5ea20f8f3ac6
data/.travis.yml CHANGED
@@ -10,16 +10,14 @@ rvm:
10
10
  - 2.1.10
11
11
  - 2.2.6
12
12
  - 2.3.3
13
- - 2.4.0
13
+ - 2.4.1
14
14
  - ruby-head
15
15
  - jruby-9000
16
16
  - jruby-head
17
- - rbx-3
18
17
  matrix:
19
18
  allow_failures:
20
19
  - rvm: ruby-head
21
20
  - rvm: jruby-head
22
- - rvm: rbx-3
23
21
  fast_finish: true
24
22
  branches:
25
23
  only: master
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Change log
2
2
 
3
+ ## [v0.13.0] - 2017-08-11
4
+
5
+ ### Changed
6
+ * Change Timeout to use clock time instead of sleep to measure interval
7
+ * Upgrade tty-cursor to fix save & restore
8
+
9
+ ### Fixed
10
+ * Fix keypress with timeout option to cleanly stop timeout thread
11
+ * Fix Reader on Windows to stop blocking when waiting for key press
12
+
3
13
  ## [v0.12.0] - 2017-03-19
4
14
 
5
15
  ### Added
@@ -191,6 +201,8 @@
191
201
 
192
202
  * Initial implementation and release
193
203
 
204
+ [v0.13.0]: https://github.com/piotrmurach/tty-prompt/compare/v0.12.0...v0.13.0
205
+ [v0.12.0]: https://github.com/piotrmurach/tty-prompt/compare/v0.11.0...v0.12.0
194
206
  [v0.11.0]: https://github.com/piotrmurach/tty-prompt/compare/v0.10.1...v0.11.0
195
207
  [v0.10.1]: https://github.com/piotrmurach/tty-prompt/compare/v0.10.0...v0.10.1
196
208
  [v0.10.0]: https://github.com/piotrmurach/tty-prompt/compare/v0.9.0...v0.10.0
data/README.md CHANGED
@@ -268,7 +268,7 @@ You can change these and configure to your liking either by inling them with the
268
268
 
269
269
  ```ruby
270
270
  prompt.ask('What is your email?') do |q|
271
- question.validate(/\A\w+@\w+\.\w+\Z/, 'Invalid email address')
271
+ q.validate(/\A\w+@\w+\.\w+\Z/, 'Invalid email address')
272
272
  end
273
273
  ```
274
274
 
@@ -276,8 +276,8 @@ or change the `messages` key entry out of `:required?`, `:valid?`, `:range?`:
276
276
 
277
277
  ```ruby
278
278
  prompt.ask('What is your email?') do |q|
279
- question.validate(/\A\w+@\w+\.\w+\Z/)
280
- question.messages[:valid?] = 'Invalid email address'
279
+ q.validate(/\A\w+@\w+\.\w+\Z/)
280
+ q.messages[:valid?] = 'Invalid email address'
281
281
  end
282
282
  ```
283
283
 
data/appveyor.yml CHANGED
@@ -18,6 +18,8 @@ environment:
18
18
  - ruby_version: "22-x64"
19
19
  - ruby_version: "23"
20
20
  - ruby_version: "23-x64"
21
+ - ruby_version: "24"
22
+ - ruby_version: "24-x64"
21
23
  matrix:
22
24
  allow_failures:
23
25
  - ruby_version: "193"
@@ -18,7 +18,9 @@ module TTY
18
18
  @echo = options.fetch(:echo) { false }
19
19
  @keys = options.fetch(:keys) { UndefinedSetting }
20
20
  @timeout = options.fetch(:timeout) { UndefinedSetting }
21
- @interval = options.fetch(:interval) { 1 }
21
+ @interval = options.fetch(:interval) {
22
+ (@timeout != UndefinedSetting && @timeout < 1) ? @timeout : 1
23
+ }
22
24
  @pause = true
23
25
  @countdown = @timeout
24
26
  @interval_handler = proc { |time|
@@ -67,6 +69,7 @@ module TTY
67
69
  while @pause
68
70
  @input = @prompt.read_keypress
69
71
  end
72
+ @pause
70
73
  end
71
74
  @evaluator.(@input)
72
75
  end
@@ -77,10 +80,10 @@ module TTY
77
80
 
78
81
  def time(&block)
79
82
  if timeout?
80
- secs = Integer(@timeout)
81
- interval = Integer(@interval)
83
+ time = Float(@timeout)
84
+ interval = Float(@interval)
82
85
  scheduler = Timeout.new(interval_handler: @interval_handler)
83
- scheduler.timeout(secs, interval, &block)
86
+ scheduler.timeout(time, interval, &block)
84
87
  else
85
88
  block.()
86
89
  end
@@ -345,7 +345,7 @@ module TTY
345
345
  #
346
346
  # @api public
347
347
  def windows?
348
- ::File::ALT_SEPARATOR == "\\"
348
+ ::File::ALT_SEPARATOR == '\\'
349
349
  end
350
350
  end # Reader
351
351
  end # Prompt
@@ -23,6 +23,20 @@ module TTY
23
23
  @@getche.call
24
24
  end
25
25
  module_function :getche
26
+
27
+ # Check the console for recent keystroke. If the function
28
+ # returns a nonzero value, a keystroke is waiting in the buffer.
29
+ #
30
+ # @return [Integer]
31
+ # return a nonzero value if a key has been pressed. Otherwirse,
32
+ # it returns 0.
33
+ #
34
+ # @api public
35
+ def kbhit
36
+ @@kbhit ||= Fiddle::Function.new(CRT_HANDLE["_kbhit"], [], TYPE_INT)
37
+ @@kbhit.call
38
+ end
39
+ module_function :kbhit
26
40
  end # WinAPI
27
41
  end # Reader
28
42
  end # Prompt
@@ -42,11 +42,18 @@ module TTY
42
42
  # @api private
43
43
  def get_char(options)
44
44
  if options[:raw]
45
- WinAPI.getch.chr
45
+ get_char_non_blocking
46
46
  else
47
- options[:echo] ? @input.getc : WinAPI.getch.chr
47
+ options[:echo] ? @input.getc : get_char_non_blocking
48
48
  end
49
49
  end
50
+
51
+ # Get the char for last key pressed, or if no keypress return nil
52
+ #
53
+ # @api private
54
+ def get_char_non_blocking
55
+ WinAPI.kbhit.zero? ? nil : WinAPI.getch.chr
56
+ end
50
57
  end # Console
51
58
  end # Reader
52
59
  end # Prompt
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require 'timers'
4
+
3
5
  module TTY
4
6
  class Prompt
5
7
  class Timeout
@@ -9,38 +11,57 @@ module TTY
9
11
 
10
12
  def initialize(options = {})
11
13
  @timeout_handler = options.fetch(:timeout_handler) { TIMEOUT_HANDLER }
12
- @interval_handler = options.fetch(:interval_handler) { proc { } }
13
- @lock = Mutex.new
14
+ @interval_handler = options.fetch(:interval_handler) { proc {} }
15
+ @lock = Mutex.new
16
+ @running = true
17
+ @timers = Timers::Group.new
14
18
  end
15
19
 
16
- def self.timeout(secs, interval, &block)
17
- (@scheduler ||= new).timeout(secs, interval, &block)
20
+ def self.timeout(time, interval, &block)
21
+ (@scheduler ||= new).timeout(time, interval, &block)
18
22
  end
19
23
 
20
- def timeout(secs, interval, &block)
21
- return block.() if secs.nil? || secs.to_i.zero?
22
- @lock.synchronize do
23
- @runner = Thread.new {
24
- run_in(secs, interval)
25
- }
26
- end
27
- block.()
24
+ # Evalute block and time it
25
+ #
26
+ # @param [Float] time
27
+ # the time by which to stop
28
+ # @param [Float] interval
29
+ # the interval time for each tick
30
+ #
31
+ # @api public
32
+ def timeout(time, interval, &block)
33
+ @runner = async_run(time, interval)
34
+ @running = block.()
35
+ @runner.join
28
36
  end
29
37
 
30
- def run_in(secs, interval)
31
- Thread.current.abort_on_exception = true
32
- start = Time.now
38
+ def async_run(time, interval)
39
+ Thread.new do
40
+ Thread.current.abort_on_exception = true
41
+ start = Time.now
33
42
 
34
- loop do
35
- sleep(interval)
36
- runtime = Time.now - start
37
- delta = secs - runtime
38
- @interval_handler.(delta.round)
43
+ interval_timer = @timers.every(interval) do
44
+ runtime = Time.now - start
45
+ delta = time - runtime
46
+ if delta.round >= 0
47
+ @interval_handler.(delta.round)
48
+ end
49
+ end
39
50
 
40
- if delta < 0.0
41
- @timeout_handler.(Thread.current)
42
- break
51
+ while @running
52
+ @lock.synchronize {
53
+ @timers.wait
54
+ runtime = Time.now - start
55
+ delta = time - runtime
56
+
57
+ if delta <= 0.0
58
+ @timeout_handler.(Thread.current)
59
+ break
60
+ end
61
+ }
43
62
  end
63
+
64
+ interval_timer.cancel
44
65
  end
45
66
  end
46
67
  end # Scheduler
@@ -2,6 +2,6 @@
2
2
 
3
3
  module TTY
4
4
  class Prompt
5
- VERSION = "0.12.0"
5
+ VERSION = "0.13.0"
6
6
  end # Prompt
7
7
  end # TTY
data/tty-prompt.gemspec CHANGED
@@ -13,15 +13,18 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = "https://piotrmurach.github.io/tty"
14
14
  spec.license = "MIT"
15
15
 
16
- spec.files = `git ls-files -z`.split("\x0")
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ f.match(%r{^(test|spec|features)/})
18
+ end
17
19
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
21
  spec.require_paths = ["lib"]
20
22
 
21
23
  spec.add_dependency 'necromancer', '~> 0.4.0'
22
24
  spec.add_dependency 'pastel', '~> 0.7.0'
23
- spec.add_dependency 'tty-cursor', '~> 0.4.0'
24
- spec.add_dependency 'wisper', '~> 1.6.1'
25
+ spec.add_dependency 'tty-cursor', '~> 0.5.0'
26
+ spec.add_dependency 'wisper', '~> 2.0.0'
27
+ spec.add_dependency 'timers', '~> 4.1.2'
25
28
 
26
29
  spec.add_development_dependency 'bundler', '>= 1.5.0', '< 2.0'
27
30
  spec.add_development_dependency 'rake'
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.12.0
4
+ version: 0.13.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-03-19 00:00:00.000000000 Z
11
+ date: 2017-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: necromancer
@@ -44,28 +44,42 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.4.0
47
+ version: 0.5.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.4.0
54
+ version: 0.5.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: wisper
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.6.1
61
+ version: 2.0.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.0.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: timers
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 4.1.2
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: 1.6.1
82
+ version: 4.1.2
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -196,68 +210,6 @@ files:
196
210
  - lib/tty/prompt/utils.rb
197
211
  - lib/tty/prompt/version.rb
198
212
  - lib/tty/test_prompt.rb
199
- - spec/spec_helper.rb
200
- - spec/unit/ask_spec.rb
201
- - spec/unit/choice/eql_spec.rb
202
- - spec/unit/choice/from_spec.rb
203
- - spec/unit/choices/add_spec.rb
204
- - spec/unit/choices/each_spec.rb
205
- - spec/unit/choices/find_by_spec.rb
206
- - spec/unit/choices/new_spec.rb
207
- - spec/unit/choices/pluck_spec.rb
208
- - spec/unit/collect_spec.rb
209
- - spec/unit/converters/convert_bool_spec.rb
210
- - spec/unit/converters/convert_char_spec.rb
211
- - spec/unit/converters/convert_custom_spec.rb
212
- - spec/unit/converters/convert_date_spec.rb
213
- - spec/unit/converters/convert_file_spec.rb
214
- - spec/unit/converters/convert_number_spec.rb
215
- - spec/unit/converters/convert_path_spec.rb
216
- - spec/unit/converters/convert_range_spec.rb
217
- - spec/unit/converters/convert_regex_spec.rb
218
- - spec/unit/converters/convert_string_spec.rb
219
- - spec/unit/converters/on_error_spec.rb
220
- - spec/unit/distance/distance_spec.rb
221
- - spec/unit/enum_paginator_spec.rb
222
- - spec/unit/enum_select_spec.rb
223
- - spec/unit/error_spec.rb
224
- - spec/unit/evaluator_spec.rb
225
- - spec/unit/expand_spec.rb
226
- - spec/unit/keypress_spec.rb
227
- - spec/unit/mask_spec.rb
228
- - spec/unit/multi_select_spec.rb
229
- - spec/unit/multiline_spec.rb
230
- - spec/unit/new_spec.rb
231
- - spec/unit/ok_spec.rb
232
- - spec/unit/paginator_spec.rb
233
- - spec/unit/question/checks_spec.rb
234
- - spec/unit/question/default_spec.rb
235
- - spec/unit/question/echo_spec.rb
236
- - spec/unit/question/in_spec.rb
237
- - spec/unit/question/initialize_spec.rb
238
- - spec/unit/question/modifier/apply_to_spec.rb
239
- - spec/unit/question/modifier/letter_case_spec.rb
240
- - spec/unit/question/modifier/whitespace_spec.rb
241
- - spec/unit/question/modify_spec.rb
242
- - spec/unit/question/required_spec.rb
243
- - spec/unit/question/validate_spec.rb
244
- - spec/unit/question/validation/call_spec.rb
245
- - spec/unit/question/validation/coerce_spec.rb
246
- - spec/unit/reader/history_spec.rb
247
- - spec/unit/reader/key_event_spec.rb
248
- - spec/unit/reader/line_spec.rb
249
- - spec/unit/reader/publish_keypress_event_spec.rb
250
- - spec/unit/reader/read_keypress_spec.rb
251
- - spec/unit/reader/read_line_spec.rb
252
- - spec/unit/reader/read_multiline_spec.rb
253
- - spec/unit/result_spec.rb
254
- - spec/unit/say_spec.rb
255
- - spec/unit/select_spec.rb
256
- - spec/unit/slider_spec.rb
257
- - spec/unit/statement/initialize_spec.rb
258
- - spec/unit/suggest_spec.rb
259
- - spec/unit/warn_spec.rb
260
- - spec/unit/yes_no_spec.rb
261
213
  - tasks/console.rake
262
214
  - tasks/coverage.rake
263
215
  - tasks/spec.rake
@@ -286,67 +238,5 @@ rubygems_version: 2.5.1
286
238
  signing_key:
287
239
  specification_version: 4
288
240
  summary: A beautiful and powerful interactive command line prompt.
289
- test_files:
290
- - spec/spec_helper.rb
291
- - spec/unit/ask_spec.rb
292
- - spec/unit/choice/eql_spec.rb
293
- - spec/unit/choice/from_spec.rb
294
- - spec/unit/choices/add_spec.rb
295
- - spec/unit/choices/each_spec.rb
296
- - spec/unit/choices/find_by_spec.rb
297
- - spec/unit/choices/new_spec.rb
298
- - spec/unit/choices/pluck_spec.rb
299
- - spec/unit/collect_spec.rb
300
- - spec/unit/converters/convert_bool_spec.rb
301
- - spec/unit/converters/convert_char_spec.rb
302
- - spec/unit/converters/convert_custom_spec.rb
303
- - spec/unit/converters/convert_date_spec.rb
304
- - spec/unit/converters/convert_file_spec.rb
305
- - spec/unit/converters/convert_number_spec.rb
306
- - spec/unit/converters/convert_path_spec.rb
307
- - spec/unit/converters/convert_range_spec.rb
308
- - spec/unit/converters/convert_regex_spec.rb
309
- - spec/unit/converters/convert_string_spec.rb
310
- - spec/unit/converters/on_error_spec.rb
311
- - spec/unit/distance/distance_spec.rb
312
- - spec/unit/enum_paginator_spec.rb
313
- - spec/unit/enum_select_spec.rb
314
- - spec/unit/error_spec.rb
315
- - spec/unit/evaluator_spec.rb
316
- - spec/unit/expand_spec.rb
317
- - spec/unit/keypress_spec.rb
318
- - spec/unit/mask_spec.rb
319
- - spec/unit/multi_select_spec.rb
320
- - spec/unit/multiline_spec.rb
321
- - spec/unit/new_spec.rb
322
- - spec/unit/ok_spec.rb
323
- - spec/unit/paginator_spec.rb
324
- - spec/unit/question/checks_spec.rb
325
- - spec/unit/question/default_spec.rb
326
- - spec/unit/question/echo_spec.rb
327
- - spec/unit/question/in_spec.rb
328
- - spec/unit/question/initialize_spec.rb
329
- - spec/unit/question/modifier/apply_to_spec.rb
330
- - spec/unit/question/modifier/letter_case_spec.rb
331
- - spec/unit/question/modifier/whitespace_spec.rb
332
- - spec/unit/question/modify_spec.rb
333
- - spec/unit/question/required_spec.rb
334
- - spec/unit/question/validate_spec.rb
335
- - spec/unit/question/validation/call_spec.rb
336
- - spec/unit/question/validation/coerce_spec.rb
337
- - spec/unit/reader/history_spec.rb
338
- - spec/unit/reader/key_event_spec.rb
339
- - spec/unit/reader/line_spec.rb
340
- - spec/unit/reader/publish_keypress_event_spec.rb
341
- - spec/unit/reader/read_keypress_spec.rb
342
- - spec/unit/reader/read_line_spec.rb
343
- - spec/unit/reader/read_multiline_spec.rb
344
- - spec/unit/result_spec.rb
345
- - spec/unit/say_spec.rb
346
- - spec/unit/select_spec.rb
347
- - spec/unit/slider_spec.rb
348
- - spec/unit/statement/initialize_spec.rb
349
- - spec/unit/suggest_spec.rb
350
- - spec/unit/warn_spec.rb
351
- - spec/unit/yes_no_spec.rb
241
+ test_files: []
352
242
  has_rdoc: