console-glitter 0.1.1 → 0.1.2

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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NGFmZWZmMDZjZDA1MjljZTQ4NjIyZjJmODhjZTk3NDIyNjhlNDcwYg==
5
- data.tar.gz: !binary |-
6
- MzkzNmEwZjE4OGY5ZmMxNTAwN2I5MGVmODliZDM3YzFlNWZiZTA2Mw==
2
+ SHA1:
3
+ metadata.gz: 33104b9e9e88b3aa31b5e7435f4a3e89850b876e
4
+ data.tar.gz: 0136e1d73e74034ce026bb00cab07b5d2193ae00
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YTRhNGFmYTczYjk0YzIyY2JhYjBlNWJkNGE5Mzk2YjFmOWE5YWJhYTQ4NDNi
10
- ZjMzMjYwMWEzYTRiYmE2ZWZlNDE2ZmY3MjM1NTgxZWZkYWYwZDRjZjEzOTk5
11
- ZmNhNmVmMmQzZTRlZmE4NzhmYzYyMjY4OGQ5YTU5Njg0Y2Y4Y2M=
12
- data.tar.gz: !binary |-
13
- NTM2YzAwNmI0NTZiZjc2YWU5Y2E5OGQxNTU1ZjAwMTA1YWM4NmVkYTIxNWU0
14
- NGJlZDBlZGMyYzBiNjJmM2RlY2RjMDQ1MTc0ZGVkNTZjMDljNWNjNjQyNGEy
15
- NjYzZGYyZmMxOTk2Mzk3YjdjNDAzMGNiZmE2MWU3OGEwZjIzZWE=
6
+ metadata.gz: 0799c8ec2726665bbf64adc5aeb443b67fd0c87d7e79962446db02d665f7b9cdbac87aefba73c6f0f5fa16fbfc318891cd3a814efe9b9073712fb07941d7edee
7
+ data.tar.gz: 9068a4dfe4e21084c1f87cfa66eff438a008680a78b5591d8e7013f637086ccabef7f221103d3e0ed2a1ec73cc5a555a93cdaaef6a327369bcc63c726f228e33
@@ -1,3 +1,3 @@
1
1
  module ConsoleGlitter
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
@@ -18,13 +18,16 @@ module ConsoleGlitter
18
18
  # will be rejected.
19
19
  # :valid_answers - An Array containing all valid responses. If
20
20
  # this is empty, any answer will be accepted
21
- # (except empty answers as specified above).
21
+ # (unless empty answers are disallowed as
22
+ # specified above). Valid responses may be
23
+ # any class with a match method such as
24
+ # Strings or Regexps.
22
25
  #
23
26
  # Returns a String containing the answer provided by the user.
24
27
  def prompt(question, options = {})
25
28
  default = options[:default_answer].to_s
26
29
  allow_empty = options[:allow_empty]
27
- valid = options[:valid_answers] || []
30
+ valid = regexify_answers(options[:valid_answers])
28
31
 
29
32
  default_display = " [#{default.strip}]" unless default.empty?
30
33
  question.strip!
@@ -38,7 +41,7 @@ module ConsoleGlitter
38
41
  if answer.empty?
39
42
  answer = nil unless allow_empty
40
43
  elsif valid.any?
41
- answer = nil unless valid.grep(answer).any?
44
+ answer = nil unless valid.map { |valid| answer.match(valid) }.any?
42
45
  end
43
46
  end
44
47
 
@@ -54,14 +57,8 @@ module ConsoleGlitter
54
57
  #
55
58
  # Returns true or false corresponding to Y or N answer respectively.
56
59
  def prompt_yn(question, args = {})
57
- args[:valid_answers] = []
58
- answer = nil
59
-
60
- until answer =~ /^[yn]/i
61
- answer = prompt(question, args)
62
- end
63
-
64
- /^n/i.match(answer).nil?
60
+ args[:valid_answers] = [/^[yn]/i]
61
+ /^n/i.match(prompt(question, args)).nil?
65
62
  end
66
63
 
67
64
  # Public: Render a "spinner" on the command line and yield to a block,
@@ -149,4 +146,24 @@ module ConsoleGlitter
149
146
  grid << grid_rule
150
147
  end
151
148
  end
149
+
150
+ private
151
+
152
+ # Internal: Generate Regexps for any String in an array to be used in order
153
+ # to match against user input. Strings are expected to indicate exact
154
+ # matches desired.
155
+ #
156
+ # valid_answers - Array containing Objects against which user input may be
157
+ # matched.
158
+ #
159
+ # Returns an Array of Regexps.
160
+ def regexify_answers(valid_answers)
161
+ valid_answers.to_a.map do |answer|
162
+ if answer.is_a?(String)
163
+ Regexp.new("^#{Regexp.escape(answer)}$")
164
+ else
165
+ answer
166
+ end
167
+ end
168
+ end
152
169
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: console-glitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Wuest
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-27 00:00:00.000000000 Z
11
+ date: 2014-02-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Tools for building nice looking CLI applications
14
14
  email: chris@chriswuest.com
@@ -29,12 +29,12 @@ require_paths:
29
29
  - lib
30
30
  required_ruby_version: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ! '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  required_rubygems_version: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ! '>='
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: '0'
40
40
  requirements: []