* fix #6608

* minor

* fix

* clean tests

* make testamnet happy

* again

* minor

* fix #13086
This commit is contained in:
flywind
2020-07-15 15:46:17 +08:00
committed by GitHub
parent f2b041f168
commit c5f64f101b
2 changed files with 35 additions and 2 deletions

View File

@@ -280,8 +280,8 @@ proc handleShortOption(p: var OptParser; cmd: string) =
while i < cmd.len and cmd[i] in {'\t', ' '}:
inc(i)
p.inShortState = false
if i < cmd.len and cmd[i] in {':', '='} or
card(p.shortNoVal) > 0 and p.key.string[0] notin p.shortNoVal:
if i < cmd.len and (cmd[i] in {':', '='} or
card(p.shortNoVal) > 0 and p.key.string[0] notin p.shortNoVal):
if i < cmd.len and cmd[i] in {':', '='}:
inc(i)
p.inShortState = false

View File

@@ -22,6 +22,15 @@ kind: cmdShortOption key:val -- r:0
kind: cmdShortOption key:val -- l:
kind: cmdShortOption key:val -- r:4
kind: cmdLongOption key:val -- debug:
cmdShortOption key: v value: ''
cmdArgument key: ABC value: ''
cmdShortOption key: v value: 'ABC'
cmdShortOption key: v value: ''
cmdArgument key: ABC value: ''
cmdShortOption key: v value: ''
cmdArgument key: ABC value: ''
cmdShortOption key: j value: '4'
cmdArgument key: ok value: ''
'''
joinable: false
"""
@@ -121,3 +130,27 @@ arg 3 ai.len:4 :{a4"b}
arg 4 ai.len:4 :{a5'b}
arg 5 ai.len:4 :{a6\b}
arg 6 ai.len:4 :{a7'b}"""
block:
let args = @["-v", "ABC"]
var p = parseopt.initOptParser(args, shortnoVal = {'n'}, longnoVal = @["novalue"])
for kind, key, val in parseopt.getopt(p):
echo kind," key: ", key, " value: '", val, "'"
var r = parseopt.initOptParser(@["-v ABC"], shortnoVal = {'n'}, longnoVal = @["novalue"])
for kind, key, val in parseopt.getopt(r):
echo kind," key: ", key, " value: '", val, "'"
var s = parseopt.initOptParser("-v ABC", shortnoVal = {'v'}, longnoVal = @["novalue"])
for kind, key, val in parseopt.getopt(s):
echo kind," key: ", key, " value: '", val, "'"
var m = parseopt.initOptParser("-v ABC", shortnoVal = {'n'}, longnoVal = @["novalue"])
for kind, key, val in parseopt.getopt(m):
echo kind," key: ", key, " value: '", val, "'"
var n = parseopt.initOptParser("-j4 ok", shortnoVal = {'n'}, longnoVal = @["novalue"])
for kind, key, val in parseopt.getopt(n):
echo kind," key: ", key, " value: '", val, "'"