thor 0.14.2 → 0.14.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -50,10 +50,12 @@ class Thor
50
50
  end
51
51
 
52
52
  def parse(args)
53
- @pile = except_underscores(args.dup)
53
+ @pile = args.dup
54
54
 
55
55
  while peek
56
- if current_is_switch?
56
+ match, is_switch = current_is_switch?
57
+
58
+ if is_switch
57
59
  case shift
58
60
  when SHORT_SQ_RE
59
61
  unshift($1.split('').map { |f| "-#{f}" })
@@ -68,7 +70,7 @@ class Thor
68
70
  switch = normalize_switch(switch)
69
71
  option = switch_option(switch)
70
72
  @assigns[option.human_name] = parse_peek(switch, option)
71
- elsif current_is_switch_formatted?
73
+ elsif match
72
74
  @unknown << shift
73
75
  else
74
76
  shift
@@ -92,15 +94,17 @@ class Thor
92
94
  #
93
95
  def current_is_switch?
94
96
  case peek
95
- when LONG_RE, SHORT_RE, EQ_RE, SHORT_NUM
96
- switch?($1)
97
- when SHORT_SQ_RE
98
- $1.split('').any? { |f| switch?("-#{f}") }
97
+ when LONG_RE, SHORT_RE, EQ_RE, SHORT_NUM
98
+ [true, switch?($1)]
99
+ when SHORT_SQ_RE
100
+ [true, $1.split('').any? { |f| switch?("-#{f}") }]
101
+ else
102
+ [false, false]
99
103
  end
100
104
  end
101
105
 
102
- def switch_formatted?(arg)
103
- case arg
106
+ def current_is_switch_formatted?
107
+ case peek
104
108
  when LONG_RE, SHORT_RE, EQ_RE, SHORT_NUM, SHORT_SQ_RE
105
109
  true
106
110
  else
@@ -108,12 +112,8 @@ class Thor
108
112
  end
109
113
  end
110
114
 
111
- def current_is_switch_formatted?
112
- switch_formatted? peek
113
- end
114
-
115
115
  def switch?(arg)
116
- switch_option(arg) || @shorts.key?(arg)
116
+ switch_option(normalize_switch(arg))
117
117
  end
118
118
 
119
119
  def switch_option(arg)
@@ -127,7 +127,7 @@ class Thor
127
127
  # Check if the given argument is actually a shortcut.
128
128
  #
129
129
  def normalize_switch(arg)
130
- @shorts.key?(arg) ? @shorts[arg] : arg
130
+ (@shorts[arg] || arg).tr('_', '-')
131
131
  end
132
132
 
133
133
  # Parse boolean values which can be given as --foo=true, --foo or --no-foo.
@@ -169,12 +169,5 @@ class Thor
169
169
  @non_assigned_required.delete(option)
170
170
  send(:"parse_#{option.type}", switch)
171
171
  end
172
-
173
- # Except underscores in commandline switches
174
- def except_underscores(args)
175
- args.map {|x| x =~ /^--/ ? x.gsub('_', '-') : x }
176
- end
177
-
178
-
179
172
  end
180
173
  end
data/lib/thor/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Thor
2
- VERSION = "0.14.2".freeze
2
+ VERSION = "0.14.3".freeze
3
3
  end
@@ -132,7 +132,6 @@ describe Thor::Options do
132
132
  parse("--foo_bar", "baz")["foo_bar"].must == "baz"
133
133
  parse("--baz_foo", "foo bar")["baz_foo"].must == "foo bar"
134
134
  end
135
-
136
135
 
137
136
  describe "with no input" do
138
137
  it "and no switches returns an empty hash" do
@@ -188,6 +187,11 @@ describe Thor::Options do
188
187
  parse("--foo=12")["foo"].must == "12"
189
188
  parse("--foo=bar=baz")["foo"].must == "bar=baz"
190
189
  end
190
+
191
+ it "must accept underscores switch=value assignment" do
192
+ create :foo_bar => :required
193
+ parse("--foo_bar=http://example.com/under_score/")["foo_bar"].must == "http://example.com/under_score/"
194
+ end
191
195
 
192
196
  it "accepts a --no-switch format" do
193
197
  create "--foo" => "bar"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thor
3
3
  version: !ruby/object:Gem::Version
4
- hash: 35
4
+ hash: 33
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 14
9
- - 2
10
- version: 0.14.2
9
+ - 3
10
+ version: 0.14.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Yehuda Katz
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-09-24 00:00:00 +02:00
19
+ date: 2010-10-04 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies: []
22
22