Module:UtilsArg/Documentation/Snippets

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, page = "Boss Key"} return utilsArg.parse(args, {		params = {			[1] = {				name = "game",				required = true,				desc = "A game",			},			page = {				required = true,				desc = "A page on the wiki",			},		}	}) end

function p.parseDeprecated local args = { oldArg = "foo" }	return utilsArg.parse(args, {		params = {			oldArg = {				deprecated = true			}		}	}) 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 = {				name = "list",				trim = true,				split = true,			}		}	}) 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.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

return p