[ruby/optparse] Fix completion of key-value pairs array
Enum array may be the list of pairs of key and value. Check if only key is completable, not pair. Fix https://github.com/ruby/optparse/pull/93 Fix https://github.com/ruby/optparse/pull/94 https://github.com/ruby/optparse/commit/a8d0ba8dac
This commit is contained in:
parent
b5cdbadeed
commit
8f19f0aad5
@ -1502,7 +1502,7 @@ XXX
|
|||||||
block = notwice(o, block, 'block')
|
block = notwice(o, block, 'block')
|
||||||
when Array, Hash
|
when Array, Hash
|
||||||
if Array === o
|
if Array === o
|
||||||
o, v = o.partition {|v| Completion.completable?(v)}
|
o, v = o.partition {|v,| Completion.completable?(v)}
|
||||||
values = notwice(v, values, 'values') unless v.empty?
|
values = notwice(v, values, 'values') unless v.empty?
|
||||||
next if o.empty?
|
next if o.empty?
|
||||||
end
|
end
|
||||||
|
@ -8,6 +8,7 @@ class TestOptionParserPlaceArg < TestOptionParser
|
|||||||
@opt.def_option("--option [VAL]") {|x| @flag = x}
|
@opt.def_option("--option [VAL]") {|x| @flag = x}
|
||||||
@opt.def_option("-T [level]", /^[0-4]$/, Integer) {|x| @topt = x}
|
@opt.def_option("-T [level]", /^[0-4]$/, Integer) {|x| @topt = x}
|
||||||
@opt.def_option("--enum [VAL]", [:Alpha, :Bravo, :Charlie]) {|x| @enum = x}
|
@opt.def_option("--enum [VAL]", [:Alpha, :Bravo, :Charlie]) {|x| @enum = x}
|
||||||
|
@opt.def_option("--enumval [VAL]", [[:Alpha, 1], [:Bravo, 2], [:Charlie, 3]]) {|x| @enum = x}
|
||||||
@opt.def_option("--integer [VAL]", Integer, [1, 2, 3]) {|x| @integer = x}
|
@opt.def_option("--integer [VAL]", Integer, [1, 2, 3]) {|x| @integer = x}
|
||||||
@opt.def_option("--range [VAL]", Integer, 1..3) {|x| @range = x}
|
@opt.def_option("--range [VAL]", Integer, 1..3) {|x| @range = x}
|
||||||
@topt = nil
|
@topt = nil
|
||||||
@ -102,6 +103,11 @@ class TestOptionParserPlaceArg < TestOptionParser
|
|||||||
assert_equal(:Alpha, @enum)
|
assert_equal(:Alpha, @enum)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_enum_pair
|
||||||
|
assert_equal([], no_error {@opt.parse!(%w"--enumval=A")})
|
||||||
|
assert_equal(1, @enum)
|
||||||
|
end
|
||||||
|
|
||||||
def test_enum_conversion
|
def test_enum_conversion
|
||||||
assert_equal([], no_error {@opt.parse!(%w"--integer=1")})
|
assert_equal([], no_error {@opt.parse!(%w"--integer=1")})
|
||||||
assert_equal(1, @integer)
|
assert_equal(1, @integer)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user