mirror of
https://github.com/TangentFoxy/argparse.git
synced 2025-07-28 02:52:20 +00:00
Remove 'aliases' property
Allow setting several names using 'name' property instead, e.g. ':name "-f --foo"' instead of ':aliases {"-f", "--foo"}'. This change breaks documented interface of 0.3.x.
This commit is contained in:
@@ -146,7 +146,7 @@ Options:
|
||||
|
||||
it("creates correct help message for commands", function()
|
||||
local parser = Parser "foo"
|
||||
parser:flag "-q" "--quiet"
|
||||
parser:flag "-q --quiet"
|
||||
local run = parser:command "run"
|
||||
:description "Run! "
|
||||
run:option "--where"
|
||||
|
@@ -4,7 +4,7 @@ getmetatable(Parser()).error = function(_, msg) error(msg) end
|
||||
describe("tests related to :pparse()", function()
|
||||
it("returns true and result on success", function()
|
||||
local parser = Parser()
|
||||
parser:option "-s" "--server"
|
||||
parser:option "-s --server"
|
||||
local ok, args = parser:pparse{"--server", "foo"}
|
||||
assert.is_true(ok)
|
||||
assert.same({server = "foo"}, args)
|
||||
@@ -20,8 +20,8 @@ describe("tests related to :pparse()", function()
|
||||
|
||||
it("still raises an error if it is caused by misconfiguration", function()
|
||||
local parser = Parser()
|
||||
parser:option "--foo"
|
||||
:aliases {1, 2, 3}
|
||||
assert.has_error(function() parser:pparse{} end)
|
||||
parser:flag "--foo"
|
||||
:action(error)
|
||||
assert.has_error(function() parser:pparse{"--foo"} end)
|
||||
end)
|
||||
end)
|
||||
|
@@ -98,19 +98,16 @@ local function typechecked(name, ...)
|
||||
return {name, function(_, value) typecheck(name, types, value) end}
|
||||
end
|
||||
|
||||
local aliased_name = {"name", function(self, value)
|
||||
local multiname = {"name", function(self, value)
|
||||
typecheck("name", {"string"}, value)
|
||||
table.insert(self._aliases, value)
|
||||
-- Do not set _name to value if there is a name already.
|
||||
return self._name
|
||||
end}
|
||||
|
||||
local aliased_aliases = {"aliases", function(self, value)
|
||||
typecheck("aliases", {"table"}, value)
|
||||
|
||||
if not self._name then
|
||||
self._name = value[1]
|
||||
for alias in value:gmatch("%S+") do
|
||||
self._name = self._name or alias
|
||||
table.insert(self._aliases, alias)
|
||||
end
|
||||
|
||||
-- Do not set _name as with other properties.
|
||||
return true
|
||||
end}
|
||||
|
||||
local function parse_boundaries(str)
|
||||
@@ -200,8 +197,7 @@ local Parser = new_class({
|
||||
local Command = new_class({
|
||||
_aliases = {}
|
||||
}, {
|
||||
aliased_name,
|
||||
aliased_aliases,
|
||||
multiname,
|
||||
typechecked("description", "string"),
|
||||
typechecked("epilog", "string"),
|
||||
typechecked("target", "string"),
|
||||
@@ -236,8 +232,7 @@ local Option = new_class({
|
||||
_mincount = 0,
|
||||
_overwrite = true
|
||||
}, {
|
||||
aliased_name,
|
||||
aliased_aliases,
|
||||
multiname,
|
||||
typechecked("description", "string"),
|
||||
typechecked("target", "string"),
|
||||
boundaries("args"),
|
||||
|
Reference in New Issue
Block a user