highline 1.6.20 → 1.6.21
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 +6 -6
- data/CHANGELOG +5 -0
- data/lib/highline.rb +1 -1
- data/lib/highline/menu.rb +6 -23
- data/lib/highline/question.rb +20 -14
- data/lib/highline/system_extensions.rb +17 -1
- data/test/tc_highline.rb +2 -2
- metadata +10 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 654d8d8fa13e9d967eb78065d7d9c6be9f82fe44
|
4
|
+
data.tar.gz: d253b0c7ae6a1d36db8f0a07ce21c116e05e5c50
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ef2e620391d4ba1df254868824bda3f88705ba2724450b6155ff785e803da17e55a4e8dcb0026d150be49260cd2857c9fb1be3362590fb9e5d6ee2066af39393
|
7
|
+
data.tar.gz: e1c49b575b7d30f0c1b594c32770ff9895fc5a4fa85c0861e34c8d50ee812ac66a6dd11f5b8da7677298134fb88ce4d50356700744d6bf3fd3db2c7f437c7c56
|
data/CHANGELOG
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
Below is a complete listing of changes for each revision of HighLine.
|
4
4
|
|
5
|
+
== 1.6.21
|
6
|
+
|
7
|
+
* Improved Windows integration (by Ronie Henrich).
|
8
|
+
* Clarified menu choice error messages (by Keith Bennett).
|
9
|
+
|
5
10
|
== 1.6.20
|
6
11
|
|
7
12
|
* Fixed a bug with FFI::NCurses integration (by agentdave).
|
data/lib/highline.rb
CHANGED
@@ -28,7 +28,7 @@ require "highline/style"
|
|
28
28
|
#
|
29
29
|
class HighLine
|
30
30
|
# The version of the installed library.
|
31
|
-
VERSION = "1.6.
|
31
|
+
VERSION = "1.6.21".freeze
|
32
32
|
|
33
33
|
# An internal HighLine error. User code does not need to trap this.
|
34
34
|
class QuestionError < StandardError
|
data/lib/highline/menu.rb
CHANGED
@@ -368,31 +368,14 @@ class HighLine
|
|
368
368
|
|
369
369
|
#
|
370
370
|
# This method will update the intelligent responses to account for
|
371
|
-
# Menu specific differences.
|
372
|
-
#
|
371
|
+
# Menu specific differences. Calls the superclass' (Question's)
|
372
|
+
# build_responses method, overriding its default arguments to specify
|
373
|
+
# 'options' will be used to populate choice lists, and that
|
374
|
+
# the newly built hash will predominate over the preexisting hash
|
375
|
+
# for any keys that are the same.
|
373
376
|
#
|
374
377
|
def update_responses( )
|
375
|
-
|
376
|
-
@responses = @responses.merge(
|
377
|
-
:ambiguous_completion =>
|
378
|
-
"Ambiguous choice. " +
|
379
|
-
"Please choose one of #{options.inspect}.",
|
380
|
-
:ask_on_error =>
|
381
|
-
"? ",
|
382
|
-
:invalid_type =>
|
383
|
-
"You must enter a valid #{options}.",
|
384
|
-
:no_completion =>
|
385
|
-
"You must choose one of " +
|
386
|
-
"#{options.inspect}.",
|
387
|
-
:not_in_range =>
|
388
|
-
"Your answer isn't within the expected range " +
|
389
|
-
"(#{expected_range}).",
|
390
|
-
:mismatch =>
|
391
|
-
"Your entries didn't match.",
|
392
|
-
:not_valid =>
|
393
|
-
"Your answer isn't valid (must match " +
|
394
|
-
"#{@validate.inspect})."
|
395
|
-
)
|
378
|
+
build_responses(options, true)
|
396
379
|
end
|
397
380
|
end
|
398
381
|
end
|
data/lib/highline/question.rb
CHANGED
@@ -225,22 +225,29 @@ class HighLine
|
|
225
225
|
#
|
226
226
|
# Called late in the initialization process to build intelligent
|
227
227
|
# responses based on the details of this Question object.
|
228
|
+
# Also used by Menu#update_responses.
|
228
229
|
#
|
229
|
-
def build_responses(
|
230
|
-
|
231
|
-
### Menu.update_responses(). Check there too when ###
|
232
|
-
### making changes! ###
|
230
|
+
def build_responses(message_source = answer_type, new_hash_wins = false)
|
231
|
+
|
233
232
|
append_default unless default.nil?
|
234
|
-
|
235
|
-
|
236
|
-
|
233
|
+
|
234
|
+
choice_error_str_func = lambda do
|
235
|
+
message_source.is_a?(Array) \
|
236
|
+
? '[' + message_source.map { |s| "#{s}" }.join(', ') + ']' \
|
237
|
+
: message_source.inspect
|
238
|
+
end
|
239
|
+
|
240
|
+
old_hash = @responses
|
241
|
+
|
242
|
+
new_hash = { :ambiguous_completion =>
|
243
|
+
"Ambiguous choice. Please choose one of " +
|
244
|
+
choice_error_str_func.call + '.',
|
237
245
|
:ask_on_error =>
|
238
246
|
"? ",
|
239
247
|
:invalid_type =>
|
240
|
-
"You must enter a valid #{
|
248
|
+
"You must enter a valid #{message_source}.",
|
241
249
|
:no_completion =>
|
242
|
-
"You must choose one of " +
|
243
|
-
"#{@answer_type.inspect}.",
|
250
|
+
"You must choose one of " + choice_error_str_func.call + '.',
|
244
251
|
:not_in_range =>
|
245
252
|
"Your answer isn't within the expected range " +
|
246
253
|
"(#{expected_range}).",
|
@@ -248,10 +255,9 @@ class HighLine
|
|
248
255
|
"Your entries didn't match.",
|
249
256
|
:not_valid =>
|
250
257
|
"Your answer isn't valid (must match " +
|
251
|
-
"#{@validate.inspect})." }
|
252
|
-
|
253
|
-
|
254
|
-
### making changes! ###
|
258
|
+
"#{@validate.inspect})." }
|
259
|
+
|
260
|
+
@responses = new_hash_wins ? old_hash.merge(new_hash) : new_hash.merge(old_hash)
|
255
261
|
end
|
256
262
|
|
257
263
|
#
|
@@ -80,7 +80,13 @@ class HighLine
|
|
80
80
|
require "dl/import"
|
81
81
|
|
82
82
|
module WinAPI
|
83
|
-
|
83
|
+
if defined?(DL::Importer)
|
84
|
+
# Ruby 1.9
|
85
|
+
extend DL::Importer
|
86
|
+
else
|
87
|
+
# Ruby 1.8
|
88
|
+
extend DL::Importable
|
89
|
+
end
|
84
90
|
begin
|
85
91
|
dlload "msvcrt", "kernel32"
|
86
92
|
rescue DL::DLError
|
@@ -89,6 +95,16 @@ class HighLine
|
|
89
95
|
extern "unsigned long _getch()"
|
90
96
|
extern "unsigned long GetConsoleScreenBufferInfo(unsigned long, void*)"
|
91
97
|
extern "unsigned long GetStdHandle(unsigned long)"
|
98
|
+
|
99
|
+
# Ruby 1.8 DL::Importable.import does mname[0,1].downcase so FooBar becomes fooBar
|
100
|
+
if defined?(getConsoleScreenBufferInfo)
|
101
|
+
alias_method :GetConsoleScreenBufferInfo, :getConsoleScreenBufferInfo
|
102
|
+
module_function :GetConsoleScreenBufferInfo
|
103
|
+
end
|
104
|
+
if defined?(getStdHandle)
|
105
|
+
alias_method :GetStdHandle, :getStdHandle
|
106
|
+
module_function :GetStdHandle
|
107
|
+
end
|
92
108
|
end
|
93
109
|
end
|
94
110
|
|
data/test/tc_highline.rb
CHANGED
@@ -168,7 +168,7 @@ class TestHighLine < Test::Unit::TestCase
|
|
168
168
|
end
|
169
169
|
assert_equal(languages.last, answer)
|
170
170
|
assert_equal( "What is your favorite programming language? " +
|
171
|
-
"You must choose one of [
|
171
|
+
"You must choose one of [Perl, Python, Ruby].\n" +
|
172
172
|
"? ", @output.string )
|
173
173
|
end
|
174
174
|
|
@@ -877,7 +877,7 @@ class TestHighLine < Test::Unit::TestCase
|
|
877
877
|
assert_equal(:generate, answer)
|
878
878
|
assert_equal( "Select a mode: " +
|
879
879
|
"Ambiguous choice. " +
|
880
|
-
"Please choose one of [
|
880
|
+
"Please choose one of [generate, gentle].\n" +
|
881
881
|
"? ", @output.string )
|
882
882
|
end
|
883
883
|
|
metadata
CHANGED
@@ -1,25 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: highline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Edward Gray II
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
14
|
-
and more for
|
15
|
-
|
13
|
+
description: |
|
14
|
+
A high-level IO library that provides validation, type conversion, and more for
|
16
15
|
command-line interfaces. HighLine also includes a complete menu system that can
|
17
|
-
|
18
16
|
crank out anything from simple list selection to complete shells with just
|
19
|
-
|
20
17
|
minutes of work.
|
21
|
-
|
22
|
-
'
|
23
18
|
email: james@graysoftinc.com
|
24
19
|
executables: []
|
25
20
|
extensions: []
|
@@ -30,7 +25,7 @@ extra_rdoc_files:
|
|
30
25
|
- CHANGELOG
|
31
26
|
- LICENSE
|
32
27
|
files:
|
33
|
-
- .gitignore
|
28
|
+
- ".gitignore"
|
34
29
|
- AUTHORS
|
35
30
|
- CHANGELOG
|
36
31
|
- COPYING
|
@@ -84,25 +79,25 @@ licenses:
|
|
84
79
|
metadata: {}
|
85
80
|
post_install_message:
|
86
81
|
rdoc_options:
|
87
|
-
- --title
|
82
|
+
- "--title"
|
88
83
|
- HighLine Documentation
|
89
|
-
- --main
|
84
|
+
- "--main"
|
90
85
|
- README
|
91
86
|
require_paths:
|
92
87
|
- lib
|
93
88
|
required_ruby_version: !ruby/object:Gem::Requirement
|
94
89
|
requirements:
|
95
|
-
- -
|
90
|
+
- - ">="
|
96
91
|
- !ruby/object:Gem::Version
|
97
92
|
version: '0'
|
98
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
94
|
requirements:
|
100
|
-
- -
|
95
|
+
- - ">="
|
101
96
|
- !ruby/object:Gem::Version
|
102
97
|
version: '0'
|
103
98
|
requirements: []
|
104
99
|
rubyforge_project: highline
|
105
|
-
rubygems_version: 2.
|
100
|
+
rubygems_version: 2.2.2
|
106
101
|
signing_key:
|
107
102
|
specification_version: 4
|
108
103
|
summary: HighLine is a high-level command-line IO library.
|