مۆدیوول:data/magic words

لە ویکیفەرھەنگ

"بەڵگەدارکردنی ئەم مۆدیوولە دەکرێ لە مۆدیوول:data/magic words/docدا دروست بکرێ"

local list_to_set = require("Module:table").listToSet

local data = {}

local aliases = {
	["#DATEFORMAT"] = "#FORMATDATE",
	["#SECTION"] = "#LST",
	["#SECTION-H"] = "#LSTH",
	["#SECTION-X"] = "#LSTX",
	["ARTICLEPAGENAME"] = "SUBJECTPAGENAME",
	["ARTICLEPAGENAMEE"] = "ARTICLEPAGENAMEE",
	["ARTICLESPACE"] = "SUBJECTSPACE",
	["ARTICLESPACEE"] = "SUBJECTSPACEE",
	["CONTENTLANG"] = "CONTENTLANGUAGE",
	["CURRENTMONTH2"] = "CURRENTMONTH",
	["DEFAULTCATEGORYSORT"] = "DEFAULTSORT",
	["DEFAULTSORTKEY"] = "DEFAULTSORT",
	["DIRMARK"] = "DIRECTIONMARK",
	["LOCALMONTH2"] = "LOCALMONTH",
	["NUMINGROUP"] = "NUMBERINGROUP",
	["pagename"] = "PAGENAME", -- anomalous lowercase case-sensitive parser variable
	["PAGESINCAT"] = "PAGESINCATEGORY"
}

local function set_magic_word(pf)
	return aliases[pf] or pf
end

-- Value is the canonical name.
data.parser_functions = {
	-- Case-sensitive.
	list_to_set(
		{"ARTICLEPAGENAME", "ARTICLEPAGENAMEE", "ARTICLESPACE", "ARTICLESPACEE", "BASEPAGENAME", "BASEPAGENAMEE", "CASCADINGSOURCES", "DEFAULTCATEGORYSORT", "DEFAULTSORT", "DEFAULTSORTKEY", "DISPLAYTITLE", "FULLPAGENAME", "FULLPAGENAMEE", "NAMESPACE", "NAMESPACEE", "NAMESPACENUMBER", "NUMBERINGROUP", "NUMBEROFACTIVEUSERS", "NUMBEROFADMINS", "NUMBEROFARTICLES", "NUMBEROFEDITS", "NUMBEROFFILES", "NUMBEROFPAGES", "NUMBEROFUSERS", "NUMINGROUP", "PAGENAME", "PAGENAMEE", "PAGESINCAT", "PAGESINCATEGORY", "PAGESIZE", "PROTECTIONEXPIRY", "PROTECTIONLEVEL", "REVISIONDAY", "REVISIONDAY2", "REVISIONID", "REVISIONMONTH", "REVISIONMONTH1", "REVISIONTIMESTAMP", "REVISIONUSER", "REVISIONYEAR", "ROOTPAGENAME", "ROOTPAGENAMEE", "SUBJECTPAGENAME", "SUBJECTPAGENAMEE", "SUBJECTSPACE", "SUBJECTSPACEE", "SUBPAGENAME", "SUBPAGENAMEE", "TALKPAGENAME", "TALKPAGENAMEE", "TALKSPACE", "TALKSPACEE"},
		set_magic_word
	),
	-- Case-insensitive.
	list_to_set(
		{"#BABEL", "#CATEGORYTREE", "#COMMASEPARATEDLIST", "#DATEFORMAT", "#EXPR", "#FORMATDATE", "#IF", "#IFEQ", "#IFERROR", "#IFEXIST", "#IFEXPR", "#INVOKE", "#LANGUAGE", "#LQTPAGELIMIT", "#LST", "#LSTH", "#LSTX", "#PROPERTY", "#REL2ABS", "#SECTION", "#SECTION-H", "#SECTION-X", "#SPECIAL", "#SPECIALE", "#STATEMENTS", "#SWITCH", "#TAG", "#TARGET", "#TIME", "#TIMEL", "#TITLEPARTS", "#USELIQUIDTHREADS", "ANCHORENCODE", "BIDI", "CANONICALURL", "CANONICALURLE", "FILEPATH", "FORMATNUM", "FULLURL", "FULLURLE", "GENDER", "GRAMMAR", "INT", "LC", "LCFIRST", "LOCALURL", "LOCALURLE", "NOEXTERNALLANGLINKS", "NS", "NSE", "PADLEFT", "PADRIGHT", "PAGEID", "PLURAL", "UC", "UCFIRST", "URLENCODE"},
		set_magic_word
	)
}

-- Value is the canonical name.
data.parser_variables = {
	-- Case-sensitive.
	list_to_set(
		{"ARTICLEPAGENAME", "ARTICLEPAGENAMEE", "ARTICLESPACE", "ARTICLESPACEE", "BASEPAGENAME", "BASEPAGENAMEE", "CASCADINGSOURCES", "CONTENTLANG", "CONTENTLANGUAGE", "CURRENTDAY", "CURRENTDAY2", "CURRENTDAYNAME", "CURRENTDOW", "CURRENTHOUR", "CURRENTMONTH", "CURRENTMONTH1", "CURRENTMONTH2", "CURRENTMONTHABBREV", "CURRENTMONTHNAME", "CURRENTMONTHNAMEGEN", "CURRENTTIME", "CURRENTTIMESTAMP", "CURRENTVERSION", "CURRENTWEEK", "CURRENTYEAR", "DIRECTIONMARK", "DIRMARK", "FULLPAGENAME", "FULLPAGENAMEE", "LOCALDAY", "LOCALDAY2", "LOCALDAYNAME", "LOCALDOW", "LOCALHOUR", "LOCALMONTH", "LOCALMONTH1", "LOCALMONTH2", "LOCALMONTHABBREV", "LOCALMONTHNAME", "LOCALMONTHNAMEGEN", "LOCALTIME", "LOCALTIMESTAMP", "LOCALWEEK", "LOCALYEAR", "NAMESPACE", "NAMESPACEE", "NAMESPACENUMBER", "NUMBEROFACTIVEUSERS", "NUMBEROFADMINS", "NUMBEROFARTICLES", "NUMBEROFEDITS", "NUMBEROFFILES", "NUMBEROFPAGES", "NUMBEROFUSERS", "PAGELANGUAGE", "pagename", "PAGENAME", "PAGENAMEE", "REVISIONDAY", "REVISIONDAY2", "REVISIONID", "REVISIONMONTH", "REVISIONMONTH1", "REVISIONSIZE", "REVISIONTIMESTAMP", "REVISIONUSER", "REVISIONYEAR", "ROOTPAGENAME", "ROOTPAGENAMEE", "SITENAME", "SUBJECTPAGENAME", "SUBJECTPAGENAMEE", "SUBJECTSPACE", "SUBJECTSPACEE", "SUBPAGENAME", "SUBPAGENAMEE", "TALKPAGENAME", "TALKPAGENAMEE", "TALKSPACE", "TALKSPACEE"},
		set_magic_word
	),
	-- Case-insensitive.
	list_to_set(
		{"!", "=", "ARTICLEPATH", "NOEXTERNALLANGLINKS", "PAGEID", "SCRIPTPATH", "SERVER", "SERVERNAME", "STYLEPATH"},
		set_magic_word
	)
}

-- Value is the relative order of priority (e.g. MSG can follow SUBST, but not RAW or MSGNW).
-- All are case-insensitive.
data.transclusion_modifiers = {
	INT = 4,
	MSG = 2,
	MSGNW = 2,
	RAW = 3,
	SAFESUBST = 1,
	SUBST = 1
}

return data