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:
mpeterv
2015-06-09 22:06:32 +03:00
parent 4320f40844
commit 44fd3b3cb8
3 changed files with 14 additions and 19 deletions

View File

@@ -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"),