Module:UtilsArg/Documentation/Snippets
From Zelda Wiki, the Zelda encyclopedia
This module contains snippets used to generate documentation and unit tests for Module:UtilsArg.
local p = {}
local Franchise = require("Module:Franchise")
local utilsArg = require("Module:UtilsArg")
function p.parsePositionalAndNamedArgs()
local args = {"OoT", page = "Boss Key"}
return utilsArg.parse(args, {
params = {
[1] = {
name = "game",
desc = "A game",
},
page = {
desc = "A page on the wiki",
},
}
})
end
function p.parseTrailingArgs()
local args = {"OoT", "MM", "TWW", "TP"}
return utilsArg.parse(args, {
params = {
["..."] = {
name = "games",
},
},
})
end
function p.parseTrailingArgsWithPositionalArgs()
local args = {"foo", "bar", "OoT", "MM", "TWW", "TP"}
return utilsArg.parse(args, {
params = {
[1] = {
name = "foo"
},
[2] = {
name = "bar",
},
["..."] = {
name = "games",
},
},
})
end
function p.parseRequiredArgs()
local args = {nil, nil, "Baz"}
return utilsArg.parse(args, {
params = {
[1] = {
name = "foo",
required = true,
},
[2] = {
name = "bar",
required = "Category:Custom Category Name",
},
[3] = {
name = "baz",
required = true,
},
}
})
end
function p.parseRequiredArgsWithAliases()
local args = { oldName = "foo" }
return utilsArg.parse(args, {
params = {
newName = {
aliases = {"oldName"}
},
}
})
end
function p.parseDeprecated()
local args = {
oldArg = "foo",
oldArg2 = "bar",
}
return utilsArg.parse(args, {
params = {
oldArg = {
deprecated = true
},
oldArg2 = {
deprecated = "Category:Custom Deprecation Category",
},
}
})
end
function p.parseUnknown()
local args = {
foo = "bar"
}
return utilsArg.parse(args, {
params = {} -- template has no args defined and yet "foo" is used as one
})
end
function p.parseBoolean()
local args = {
foo = "anything",
bar = "false",
baz = " ",
}
return utilsArg.parse(args, {
params = {
foo = {
type = "boolean"
},
bar = {
type = "boolean",
},
baz = {
type = "boolean",
},
}
})
end
function p.parseNumber()
local args = {
foo = "9000",
bar = " ",
}
return utilsArg.parse(args, {
params = {
foo = {
type = "number"
},
bar = {
type = "number",
},
}
})
end
function p.parseInvalidNumber()
local args = {
foo = "notANumber",
}
return utilsArg.parse(args, {
params = {
foo = {
type = "number"
}
}
})
end
function p.parseDefault()
local args = {[3] = "", [4] = ""}
return utilsArg.parse(args, {
params = {
[1] = {
name = "someParamWithDefault",
type = "string",
default = "foo",
},
[2] = {
name = "someParamWithDefaultNumber",
type = "number",
default = 1,
},
[3] = {
name = "param3",
type = "string",
default = "bar",
nilIfEmpty = true,
},
[4] = {
name = "param4",
type = "string",
default = "baz",
}
}
})
end
function p.parseTrim()
local args = {" foo \n"}
return utilsArg.parse(args, {
params = {
[1] = {
name = "someParam",
trim = true,
},
}
})
end
function p.parseNilIfEmpty()
local args = {
foo = ""
}
return utilsArg.parse(args, {
params = {
foo = {
nilIfEmpty = true,
},
}
})
end
function p.parseSplit()
local args = {
foo = " a, b , c,"
}
return utilsArg.parse(args, {
params = {
foo = {
trim = true,
split = true,
}
}
})
end
function p.parseSplitPattern()
local args = {
foo = "abc"
}
return utilsArg.parse(args, {
params = {
foo = {
split = "",
}
}
})
end
function p.parseNilIfEmptyWithRequiredArgs()
local args = {""}
return utilsArg.parse(args, {
params = {
[1] = {
name = "game",
nilIfEmpty = true,
required = true,
desc = "A game",
},
}
})
end
function p.parseTrimNilIfEmptyRequired()
local args = {" \n"}
return utilsArg.parse(args, {
params = {
[1] = {
name = "game",
desc = "A game",
trim = true,
nilIfEmpty = true,
required = true,
},
}
})
end
function p.parseEnum()
local args = {"Kooloo", "Limpah", "ALttZ"}
return utilsArg.parse(args, {
params = {
[1] = {
name = "triforce1",
enum = {"Courage", "Power", "Wisdom"}
},
[2] = {
name = "triforce2",
enum = {"Courage", "Power", "Wisdom", reference = "[[Triforce]]"},
},
[3] = {
name = "game",
enum = Franchise.enum(), -- from [[Module:Franchise]]
}
}
})
end
function p.parseSplitEnum()
local args = {
games = "OoT, fakeGame, BotW",
}
return utilsArg.parse(args, {
params = {
games = {
split = true,
enum = Franchise.enum(),
},
},
})
end
function p.parseSplitEnumSortAndRemoveDuplicates()
local args = {
games = "BotW, BotW, fakeGame, OoT, OoT",
}
return utilsArg.parse(args, {
params = {
games = {
split = true,
enum = Franchise.enum(),
sortAndRemoveDuplicates = true,
},
},
})
end
function p.parseEnumDependsOn()
local validTermsForGame = {
OoT = {"Dinolfos"},
TP = {"Dynalfos"},
}
local args = {"TP", "Dinolfos"}
return utilsArg.parse(args, {
params = {
[1] = {
name = "game",
required = true,
},
[2] = {
name = "term",
enumDependsOn = "game",
enum = function(game)
return validTermsForGame[game]
end,
}
}
})
end
function p.parseEnumDependsOnNil()
local validTermsForGame = {
OoT = {"Dinolfos"},
TP = {"Dynalfos"},
}
local args = {nil, "Dinolfos"}
return utilsArg.parse(args, {
params = {
[1] = {
name = "game",
required = true,
},
[2] = {
name = "term",
enumDependsOn = "game",
enum = function(game)
return validTermsForGame[game]
end,
}
}
})
end
function p.parseTermStorePass()
local args = {"Dinolfos", games = "OoT, MM", plural = nil}
return utilsArg.parse(args, {
params = {
[1] = {
name = "term",
nilIfEmpty = true,
required = true,
},
games = {
split = true,
enum = Franchise.enum(),
},
plural = {
deprecated = true,
}
}
})
end
function p.parseTermStoreFail()
local args = {"", games = "YY, ZZ", plural = "true"}
return utilsArg.parse(args, {
params = {
[1] = {
name = "term",
nilIfEmpty = true,
required = true,
},
games = {
split = true,
enum = Franchise.enum(),
},
plural = {
deprecated = true,
},
}
})
end
function p.parseTrailingArgsStringTrimNilIfEmptyEnum()
local args = {"\n OoT", "", "MM ", "ALttZ"}
return utilsArg.parse(args, {
params = {
["..."] = {
name = "games",
trim = true,
nilIfEmpty = true,
enum = Franchise.enum()
},
}
})
end
function p.parseRepeatedGroup()
local args = {
tab1 = "Tab 1",
content1 = "Content 1",
tab2= "Tab 2",
content2 = "Content 2",
-- missing tab3, content3
tab4 = "Tab 4",
-- missing content4
--missing tab5
content5 = "Content 5",
}
return utilsArg.parse(args, {
params = {
["tab"] = { required = true },
["content"] = { required = true },
},
repeatedGroup = {
name = "tabs",
params = {"tab", "content"},
},
})
end
function p.schemaValidatePasses()
local mySchema = {
oneOf = {
{
type = "string"
},
{
type = "array",
items = {
type = "string",
enum = {"Kooloo", "Limpah"},
}
}
}
}
local magicWords = "Alakazam"
return utilsArg.schemaValidate(mySchema, "mySchema", magicWords, "magicWords")
end
function p.schemaValidateFails()
local mySchema = {
oneOf = {
{
type = "string"
},
{
type = "array",
items = {
type = "string",
enum = {"Kooloo", "Limpah"}
}
}
}
}
local magicWords = {"Alakazam"}
return utilsArg.schemaValidate(mySchema, "mySchema", magicWords, "magicWords")
end
return p