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, 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.parseDeprecated local args = { oldArg = "foo" }	return utilsArg.parse(args, {		params = {			oldArg = {				deprecated = true			}		}	}) end

function p.parseUnkown local args = { foo = "bar" }	return utilsArg.parse(args, {		params = {} -- template has no args defined and yet "foo" is used as one	}) end

function p.parseNumber local args = { foo = "9000", }	return utilsArg.parse(args, {		params = {			foo = {				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"] = {},			["content"] = {}		},		repeatedGroup = {			name = "tabs",			params = {"tab", "content"},			count = 3,		},	}) 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