No way to pass in a blank array?
jrimmer-housecallpro opened this issue · comments
If I have an array option with a default, e.g.
opts = Slop.parse do |o|
o.array '-f', '--foo', 'Fro the bozzle', default: ['frobozzle']
end
While I can certainly replace the default array elements, I can't replace it with an empty array.
Using this code, I can pass in --foo ""
and the array will be empty. What is it you're expecting in this scenario? Or are you trying something else?
I'm an idiot. I was trying to do --foo=""
and it was arguing with me. That works. Thanks!
Actually, I would expect your example to work the same way as without the =
, so I do think that's a bug. It works for strings, for example:
opts = Slop.parse do |o|
o.string "-s", "--str"
o.array "-a", "--arr", default: ["default"]
end
p opts.to_h
ruby example.rb --arr "" --str="foo"
{:str=>"foo", :arr=>[]}
But with the =
it raises an error:
ruby example.rb --arr=""
Traceback (most recent call last):
7: from example.rb:6:in `<main>'
6: from /Users/lee/code/slop/lib/slop.rb:23:in `parse'
5: from /Users/lee/code/slop/lib/slop/options.rb:72:in `parse'
4: from /Users/lee/code/slop/lib/slop/parser.rb:49:in `parse'
3: from /Users/lee/code/slop/lib/slop/parser.rb:49:in `each_with_index'
2: from /Users/lee/code/slop/lib/slop/parser.rb:49:in `each'
1: from /Users/lee/code/slop/lib/slop/parser.rb:59:in `block in parse'
/Users/lee/code/slop/lib/slop/parser.rb:131:in `try_process': unknown option `--arr=' (Slop::UnknownOption)
This will need to be looked into.
Actually, it doesn't work for blank strings either:
ruby example.rb --str=""
Traceback (most recent call last):
7: from example.rb:6:in `<main>'
6: from /Users/lee/code/slop/lib/slop.rb:23:in `parse'
5: from /Users/lee/code/slop/lib/slop/options.rb:72:in `parse'
4: from /Users/lee/code/slop/lib/slop/parser.rb:49:in `parse'
3: from /Users/lee/code/slop/lib/slop/parser.rb:49:in `each_with_index'
2: from /Users/lee/code/slop/lib/slop/parser.rb:49:in `each'
1: from /Users/lee/code/slop/lib/slop/parser.rb:60:in `block in parse'
/Users/lee/code/slop/lib/slop/parser.rb:132:in `try_process': unknown option `--str=' (Slop::UnknownOption)
So there's clearly a problem when parsing an array of options that includes an argument with an empty string when using the opt=arg
variant.
Yay! I'm not a total buffoon!
@jrimmer-housecallpro Could you check your code against #268 and let me know how it goes?
Works like a charm. Thanks, @leejarvis !