mirror of
https://github.com/TangentFoxy/argparse.git
synced 2025-07-28 11:02:20 +00:00
Respect empty initial value in 'append' and 'concat' actions
This commit is contained in:
@@ -115,6 +115,21 @@ describe("actions", function()
|
|||||||
assert.same({foo = false, bar = true}, args)
|
assert.same({foo = false, bar = true}, args)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it("'append' and 'concat' respect initial value", function()
|
||||||
|
local parser = Parser()
|
||||||
|
parser:option("-f"):count("*"):init(nil)
|
||||||
|
parser:option("-g"):args("*"):count("*"):action("concat"):init(nil)
|
||||||
|
|
||||||
|
local args = parser:parse{}
|
||||||
|
assert.same({}, args)
|
||||||
|
|
||||||
|
args = parser:parse{"-fabc", "-fdef", "-g"}
|
||||||
|
assert.same({f = {"abc", "def"}, g = {}}, args)
|
||||||
|
|
||||||
|
args = parser:parse{"-g", "abc", "def", "-g123", "-f123"}
|
||||||
|
assert.same({f = {"123"}, g = {"abc", "def", "123"}}, args)
|
||||||
|
end)
|
||||||
|
|
||||||
it("for options allow setting initial stored value as non-string argument to default", function()
|
it("for options allow setting initial stored value as non-string argument to default", function()
|
||||||
local parser = Parser()
|
local parser = Parser()
|
||||||
parser:flag("--no-foo", "Foo the bar.", true):target("foo"):action("store_false")
|
parser:flag("--no-foo", "Foo the bar.", true):target("foo"):action("store_false")
|
||||||
|
@@ -368,6 +368,7 @@ function actions.count(result, target, _, overwrite)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function actions.append(result, target, argument, overwrite)
|
function actions.append(result, target, argument, overwrite)
|
||||||
|
result[target] = result[target] or {}
|
||||||
table.insert(result[target], argument)
|
table.insert(result[target], argument)
|
||||||
|
|
||||||
if overwrite then
|
if overwrite then
|
||||||
@@ -380,6 +381,8 @@ function actions.concat(result, target, arguments, overwrite)
|
|||||||
error("'concat' action can't handle too many invocations")
|
error("'concat' action can't handle too many invocations")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
result[target] = result[target] or {}
|
||||||
|
|
||||||
for _, argument in ipairs(arguments) do
|
for _, argument in ipairs(arguments) do
|
||||||
table.insert(result[target], argument)
|
table.insert(result[target], argument)
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user