<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ATemplate_link</id>
	<title>Module:Template link - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ATemplate_link"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:Template_link&amp;action=history"/>
	<updated>2026-04-05T09:25:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:Template_link&amp;diff=214883&amp;oldid=prev</id>
		<title>Chrysophylax: Created page with &quot;local export = {}  local date_and_time				= &quot;mw:Help:Magic words#Date and time&quot; local technical_metadata		= &quot;mw:Help:Magic words#Technical metadata&quot; local tech_meta_another_pa...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:Template_link&amp;diff=214883&amp;oldid=prev"/>
		<updated>2021-01-02T04:37:51Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local export = {}  local date_and_time				= &amp;quot;mw:Help:Magic words#Date and time&amp;quot; local technical_metadata		= &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot; local tech_meta_another_pa...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local export = {}&lt;br /&gt;
&lt;br /&gt;
local date_and_time				= &amp;quot;mw:Help:Magic words#Date and time&amp;quot;&lt;br /&gt;
local technical_metadata		= &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;&lt;br /&gt;
local tech_meta_another_page	= &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;&lt;br /&gt;
local page_names				= &amp;quot;mw:Help:Magic words#Page names&amp;quot;&lt;br /&gt;
local namespaces				= &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;&lt;br /&gt;
local formatting				= &amp;quot;mw:Help:Magic words#Formatting&amp;quot;&lt;br /&gt;
local URL_data					= &amp;quot;mw:Help:Magic words#URL data&amp;quot;&lt;br /&gt;
local localization				= &amp;quot;mw:Help:Magic words#Localization&amp;quot;&lt;br /&gt;
local miscellaneous				= &amp;quot;mw:Help:Magic words#Miscellaneous&amp;quot;&lt;br /&gt;
local parser_functions_link		= &amp;quot;mw:Help:Extension:ParserFunctions&amp;quot;&lt;br /&gt;
local LST						= &amp;quot;mw:Extension:Labeled Section Transclusion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local variables_nullary = {&lt;br /&gt;
	[&amp;quot;CURRENTYEAR&amp;quot;        ] = date_and_time;&lt;br /&gt;
	[&amp;quot;CURRENTMONTH&amp;quot;       ] = date_and_time;&lt;br /&gt;
	[&amp;quot;CURRENTMONTH1&amp;quot;      ] = date_and_time; -- undocumented&lt;br /&gt;
	[&amp;quot;CURRENTMONTH2&amp;quot;      ] = date_and_time; -- undocumented&lt;br /&gt;
	[&amp;quot;CURRENTMONTHNAME&amp;quot;   ] = date_and_time;&lt;br /&gt;
	[&amp;quot;CURRENTMONTHNAMEGEN&amp;quot;] = date_and_time;&lt;br /&gt;
	[&amp;quot;CURRENTMONTHABBREV&amp;quot; ] = date_and_time;&lt;br /&gt;
	[&amp;quot;CURRENTDAY&amp;quot;         ] = date_and_time;&lt;br /&gt;
	[&amp;quot;CURRENTDAY2&amp;quot;        ] = date_and_time;&lt;br /&gt;
	[&amp;quot;CURRENTDOW&amp;quot;         ] = date_and_time;&lt;br /&gt;
	[&amp;quot;CURRENTDAYNAME&amp;quot;     ] = date_and_time;&lt;br /&gt;
	[&amp;quot;CURRENTTIME&amp;quot;        ] = date_and_time;&lt;br /&gt;
	[&amp;quot;CURRENTHOUR&amp;quot;        ] = date_and_time;&lt;br /&gt;
	[&amp;quot;CURRENTWEEK&amp;quot;        ] = date_and_time;&lt;br /&gt;
	[&amp;quot;CURRENTTIMESTAMP&amp;quot;   ] = date_and_time;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;LOCALYEAR&amp;quot;          ] = date_and_time;&lt;br /&gt;
	[&amp;quot;LOCALMONTH&amp;quot;         ] = date_and_time;&lt;br /&gt;
	[&amp;quot;LOCALMONTH1&amp;quot;        ] = date_and_time; -- undocumented&lt;br /&gt;
	[&amp;quot;LOCALMONTH2&amp;quot;        ] = date_and_time; -- undocumented&lt;br /&gt;
	[&amp;quot;LOCALMONTHNAME&amp;quot;     ] = date_and_time;&lt;br /&gt;
	[&amp;quot;LOCALMONTHNAMEGEN&amp;quot;  ] = date_and_time;&lt;br /&gt;
	[&amp;quot;LOCALMONTHABBREV&amp;quot;   ] = date_and_time;&lt;br /&gt;
	[&amp;quot;LOCALDAY&amp;quot;           ] = date_and_time;&lt;br /&gt;
	[&amp;quot;LOCALDAY2&amp;quot;          ] = date_and_time;&lt;br /&gt;
	[&amp;quot;LOCALDOW&amp;quot;           ] = date_and_time;&lt;br /&gt;
	[&amp;quot;LOCALDAYNAME&amp;quot;       ] = date_and_time;&lt;br /&gt;
	[&amp;quot;LOCALTIME&amp;quot;          ] = date_and_time;&lt;br /&gt;
	[&amp;quot;LOCALHOUR&amp;quot;          ] = date_and_time;&lt;br /&gt;
	[&amp;quot;LOCALWEEK&amp;quot;          ] = date_and_time;&lt;br /&gt;
	[&amp;quot;LOCALTIMESTAMP&amp;quot;     ] = date_and_time;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;SITENAME&amp;quot;           ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;SERVER&amp;quot;             ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;SERVERNAME&amp;quot;         ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;DIRMARK&amp;quot;            ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;DIRECTIONMARK&amp;quot;      ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;ARTICLEPATH&amp;quot;        ] = technical_metadata; -- undocumented&lt;br /&gt;
	[&amp;quot;SCRIPTPATH&amp;quot;         ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;STYLEPATH&amp;quot;          ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;CURRENTVERSION&amp;quot;     ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;CONTENTLANGUAGE&amp;quot;    ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;CONTENTLANG&amp;quot;        ] = technical_metadata;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;PAGEID&amp;quot;             ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;CASCADINGSOURCES&amp;quot;   ] = technical_metadata;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;REVISIONID&amp;quot;         ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;REVISIONDAY&amp;quot;        ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;REVISIONDAY2&amp;quot;       ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;REVISIONMONTH&amp;quot;      ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;REVISIONMONTH1&amp;quot;     ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;REVISIONYEAR&amp;quot;       ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;REVISIONTIMESTAMP&amp;quot;  ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;REVISIONUSER&amp;quot;       ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;REVISIONSIZE&amp;quot;       ] = technical_metadata;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;NUMBEROFPAGES&amp;quot;      ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;NUMBEROFARTICLES&amp;quot;   ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;NUMBEROFFILES&amp;quot;      ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;NUMBEROFEDITS&amp;quot;      ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;NUMBEROFVIEWS&amp;quot;      ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;NUMBEROFUSERS&amp;quot;      ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;NUMBEROFADMINS&amp;quot;     ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;NUMBEROFACTIVEUSERS&amp;quot;] = technical_metadata;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;FULLPAGENAME&amp;quot;       ] = page_names;&lt;br /&gt;
	[&amp;quot;PAGENAME&amp;quot;           ] = page_names;&lt;br /&gt;
	[&amp;quot;BASEPAGENAME&amp;quot;       ] = page_names;&lt;br /&gt;
	[&amp;quot;SUBPAGENAME&amp;quot;        ] = page_names;&lt;br /&gt;
	[&amp;quot;SUBJECTPAGENAME&amp;quot;    ] = page_names;&lt;br /&gt;
	[&amp;quot;ARTICLEPAGENAME&amp;quot;    ] = page_names;&lt;br /&gt;
	[&amp;quot;TALKPAGENAME&amp;quot;       ] = page_names;&lt;br /&gt;
	[&amp;quot;ROOTPAGENAME&amp;quot;       ] = page_names; -- undocumented&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;FULLPAGENAMEE&amp;quot;      ] = page_names;&lt;br /&gt;
	[&amp;quot;PAGENAMEE&amp;quot;          ] = page_names;&lt;br /&gt;
	[&amp;quot;BASEPAGENAMEE&amp;quot;      ] = page_names;&lt;br /&gt;
	[&amp;quot;SUBPAGENAMEE&amp;quot;       ] = page_names;&lt;br /&gt;
	[&amp;quot;SUBJECTPAGENAMEE&amp;quot;   ] = page_names;&lt;br /&gt;
	[&amp;quot;ARTICLEPAGENAMEE&amp;quot;   ] = page_names;&lt;br /&gt;
	[&amp;quot;TALKPAGENAMEE&amp;quot;      ] = page_names;&lt;br /&gt;
	[&amp;quot;ROOTPAGENAMEE&amp;quot;      ] = page_names; -- undocumented&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;NAMESPACE&amp;quot;          ] = namespaces;&lt;br /&gt;
	[&amp;quot;NAMESPACENUMBER&amp;quot;    ] = namespaces;&lt;br /&gt;
	[&amp;quot;SUBJECTSPACE&amp;quot;       ] = namespaces;&lt;br /&gt;
	[&amp;quot;ARTICLESPACE&amp;quot;       ] = namespaces;&lt;br /&gt;
	[&amp;quot;TALKSPACE&amp;quot;          ] = namespaces;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;NAMESPACEE&amp;quot;         ] = namespaces;&lt;br /&gt;
	[&amp;quot;SUBJECTSPACEE&amp;quot;      ] = namespaces;&lt;br /&gt;
	[&amp;quot;TALKSPACEE&amp;quot;         ] = namespaces;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;!&amp;quot;                  ] = &amp;quot;mw:Help:Magic words#Other&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local variables_nonnullary = {&lt;br /&gt;
	[&amp;quot;PROTECTIONLEVEL&amp;quot;    ] = technical_metadata;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;DISPLAYTITLE&amp;quot;       ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;DEFAULTSORT&amp;quot;        ] = technical_metadata;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;PAGESINCATEGORY&amp;quot;    ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;PAGESINCAT&amp;quot;         ] = technical_metadata;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;NUMBERINGROUP&amp;quot;      ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;PAGESINNS&amp;quot;          ] = technical_metadata;&lt;br /&gt;
	[&amp;quot;PAGESINNAMESPACE&amp;quot;   ] = technical_metadata;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;FULLPAGENAME&amp;quot;       ] = page_names;&lt;br /&gt;
	[&amp;quot;PAGENAME&amp;quot;           ] = page_names;&lt;br /&gt;
	[&amp;quot;BASEPAGENAME&amp;quot;       ] = page_names;&lt;br /&gt;
	[&amp;quot;SUBPAGENAME&amp;quot;        ] = page_names;&lt;br /&gt;
	[&amp;quot;SUBJECTPAGENAME&amp;quot;    ] = page_names;&lt;br /&gt;
	[&amp;quot;ARTICLEPAGENAME&amp;quot;    ] = page_names;&lt;br /&gt;
	[&amp;quot;TALKPAGENAME&amp;quot;       ] = page_names;&lt;br /&gt;
	[&amp;quot;ROOTPAGENAME&amp;quot;       ] = page_names; -- undocumented&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;FULLPAGENAMEE&amp;quot;      ] = page_names;&lt;br /&gt;
	[&amp;quot;PAGENAMEE&amp;quot;          ] = page_names;&lt;br /&gt;
	[&amp;quot;BASEPAGENAMEE&amp;quot;      ] = page_names;&lt;br /&gt;
	[&amp;quot;SUBPAGENAMEE&amp;quot;       ] = page_names;&lt;br /&gt;
	[&amp;quot;SUBJECTPAGENAMEE&amp;quot;   ] = page_names;&lt;br /&gt;
	[&amp;quot;ARTICLEPAGENAMEE&amp;quot;   ] = page_names;&lt;br /&gt;
	[&amp;quot;TALKPAGENAMEE&amp;quot;      ] = page_names;&lt;br /&gt;
	[&amp;quot;ROOTPAGENAMEE&amp;quot;      ] = page_names; -- undocumented&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;NAMESPACE&amp;quot;          ] = namespaces;&lt;br /&gt;
	[&amp;quot;NAMESPACENUMBER&amp;quot;    ] = namespaces;&lt;br /&gt;
	[&amp;quot;SUBJECTSPACE&amp;quot;       ] = namespaces;&lt;br /&gt;
	[&amp;quot;ARTICLESPACE&amp;quot;       ] = namespaces;&lt;br /&gt;
	[&amp;quot;TALKSPACE&amp;quot;          ] = namespaces;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;NAMESPACEE&amp;quot;         ] = namespaces;&lt;br /&gt;
	[&amp;quot;SUBJECTSPACEE&amp;quot;      ] = namespaces;&lt;br /&gt;
	[&amp;quot;TALKSPACEE&amp;quot;         ] = namespaces;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;PAGEID&amp;quot;             ] = tech_meta_another_page;&lt;br /&gt;
	[&amp;quot;PAGESIZE&amp;quot;           ] = tech_meta_another_page;&lt;br /&gt;
	[&amp;quot;PROTECTIONLEVEL&amp;quot;    ] = tech_meta_another_page;&lt;br /&gt;
	[&amp;quot;CASCADINGSOURCES&amp;quot;   ] = tech_meta_another_page;&lt;br /&gt;
	[&amp;quot;REVISIONID&amp;quot;         ] = tech_meta_another_page;&lt;br /&gt;
	[&amp;quot;REVISIONDAY&amp;quot;        ] = tech_meta_another_page;&lt;br /&gt;
	[&amp;quot;REVISIONDAY2&amp;quot;       ] = tech_meta_another_page;&lt;br /&gt;
	[&amp;quot;REVISIONMONTH&amp;quot;      ] = tech_meta_another_page;&lt;br /&gt;
	[&amp;quot;REVISIONMONTH1&amp;quot;     ] = tech_meta_another_page;&lt;br /&gt;
	[&amp;quot;REVISIONYEAR&amp;quot;       ] = tech_meta_another_page;&lt;br /&gt;
	[&amp;quot;REVISIONTIMESTAMP&amp;quot;  ] = tech_meta_another_page;&lt;br /&gt;
	[&amp;quot;REVISIONUSER&amp;quot;       ] = tech_meta_another_page;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local parser_functions = {&lt;br /&gt;
	-- built-ins&lt;br /&gt;
	[&amp;quot;localurl&amp;quot;     ] = URL_data;&lt;br /&gt;
	[&amp;quot;localurle&amp;quot;    ] = URL_data;&lt;br /&gt;
	[&amp;quot;fullurl&amp;quot;      ] = URL_data;&lt;br /&gt;
	[&amp;quot;fullurle&amp;quot;     ] = URL_data;&lt;br /&gt;
	[&amp;quot;canonicalurl&amp;quot; ] = URL_data;&lt;br /&gt;
	[&amp;quot;canonicalurle&amp;quot;] = URL_data;&lt;br /&gt;
	[&amp;quot;filepath&amp;quot;     ] = URL_data;&lt;br /&gt;
	[&amp;quot;urlencode&amp;quot;    ] = URL_data;&lt;br /&gt;
	[&amp;quot;urldecode&amp;quot;    ] = URL_data;&lt;br /&gt;
	[&amp;quot;anchorencode&amp;quot; ] = URL_data;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;ns&amp;quot;          ] = namespaces;&lt;br /&gt;
	[&amp;quot;nse&amp;quot;         ] = namespaces;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;formatnum&amp;quot;   ] = formatting;&lt;br /&gt;
	[&amp;quot;#dateformat&amp;quot; ] = formatting;&lt;br /&gt;
	[&amp;quot;#formatdate&amp;quot; ] = formatting;&lt;br /&gt;
	[&amp;quot;lc&amp;quot;          ] = formatting;&lt;br /&gt;
	[&amp;quot;lcfirst&amp;quot;     ] = formatting;&lt;br /&gt;
	[&amp;quot;uc&amp;quot;          ] = formatting;&lt;br /&gt;
	[&amp;quot;ucfirst&amp;quot;     ] = formatting;&lt;br /&gt;
	[&amp;quot;padleft&amp;quot;     ] = formatting;&lt;br /&gt;
	[&amp;quot;padright&amp;quot;    ] = formatting;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;plural&amp;quot;      ] = localization;&lt;br /&gt;
	[&amp;quot;grammar&amp;quot;     ] = localization;&lt;br /&gt;
	[&amp;quot;gender&amp;quot;      ] = localization;&lt;br /&gt;
	[&amp;quot;int&amp;quot;         ] = localization;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;#language&amp;quot;   ] = miscellaneous;&lt;br /&gt;
	[&amp;quot;#special&amp;quot;    ] = miscellaneous;&lt;br /&gt;
	[&amp;quot;#speciale&amp;quot;   ] = miscellaneous;&lt;br /&gt;
	[&amp;quot;#tag&amp;quot;        ] = miscellaneous;&lt;br /&gt;
	&lt;br /&gt;
	-- [[mw:Extension:ParserFunctions]]&lt;br /&gt;
	[&amp;quot;#expr&amp;quot;       ] = parser_functions_link .. &amp;quot;##expr&amp;quot;;&lt;br /&gt;
	[&amp;quot;#if&amp;quot;         ] = parser_functions_link .. &amp;quot;##if&amp;quot;;&lt;br /&gt;
	[&amp;quot;#ifeq&amp;quot;       ] = parser_functions_link .. &amp;quot;##ifeq&amp;quot;;&lt;br /&gt;
	[&amp;quot;#iferror&amp;quot;    ] = parser_functions_link .. &amp;quot;##iferror&amp;quot;;&lt;br /&gt;
	[&amp;quot;#ifexpr&amp;quot;     ] = parser_functions_link .. &amp;quot;##ifexpr&amp;quot;;&lt;br /&gt;
	[&amp;quot;#ifexist&amp;quot;    ] = parser_functions_link .. &amp;quot;##ifexist&amp;quot;;&lt;br /&gt;
	[&amp;quot;#rel2abs&amp;quot;    ] = parser_functions_link .. &amp;quot;##rel2abs&amp;quot;;&lt;br /&gt;
	[&amp;quot;#switch&amp;quot;     ] = parser_functions_link .. &amp;quot;##switch&amp;quot;;&lt;br /&gt;
	[&amp;quot;#time&amp;quot;       ] = parser_functions_link .. &amp;quot;##time&amp;quot;;&lt;br /&gt;
	[&amp;quot;#timel&amp;quot;      ] = parser_functions_link .. &amp;quot;##timel&amp;quot;;&lt;br /&gt;
	[&amp;quot;#titleparts&amp;quot; ] = parser_functions_link .. &amp;quot;##titleparts&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	-- other extensions&lt;br /&gt;
	[&amp;quot;#invoke&amp;quot;          ] = &amp;quot;mw:Extension:Scribunto&amp;quot;;&lt;br /&gt;
 	[&amp;quot;#babel&amp;quot;           ] = &amp;quot;mw:Extension:Babel&amp;quot;;&lt;br /&gt;
 	[&amp;quot;#categorytree&amp;quot;    ] = &amp;quot;mw:Extension:CategoryTree#The {{#categorytree}} parser function&amp;quot;;&lt;br /&gt;
 	[&amp;quot;#lst&amp;quot;             ] = LST;&lt;br /&gt;
 	[&amp;quot;#lstx&amp;quot;            ] = LST;&lt;br /&gt;
 	[&amp;quot;#lsth&amp;quot;            ] = LST; -- not available, it seems&lt;br /&gt;
 	[&amp;quot;#lqtpagelimit&amp;quot;    ] = &amp;quot;mw:Extension:LiquidThreads&amp;quot;;&lt;br /&gt;
	[&amp;quot;#useliquidthreads&amp;quot;] = &amp;quot;mw:Extension:LiquidThreads&amp;quot;;&lt;br /&gt;
	[&amp;quot;#target&amp;quot;          ] = &amp;quot;mw:Extension:MassMessage&amp;quot;; -- not documented yet&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- rudimentary&lt;br /&gt;
local function is_valid_pagename(pagename)&lt;br /&gt;
	if (pagename == &amp;quot;&amp;quot;) or pagename:match(&amp;quot;[%[%]%|%{%}#\127&amp;lt;&amp;gt;]&amp;quot;) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hook_special(page)&lt;br /&gt;
	if is_valid_pagename(page) then&lt;br /&gt;
		return &amp;quot;[[Special:&amp;quot; .. page .. &amp;quot;|&amp;quot; .. page .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return page&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local parser_function_hooks = {&lt;br /&gt;
	[&amp;quot;#special&amp;quot; ] = hook_special;&lt;br /&gt;
	[&amp;quot;#speciale&amp;quot;] = hook_special;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;int&amp;quot;] = function (mesg)&lt;br /&gt;
		if is_valid_pagename(mesg) then&lt;br /&gt;
			return (&amp;quot;[[:MediaWiki:&amp;quot; .. mesg .. &amp;quot;|&amp;quot; .. mesg .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			return mesg&lt;br /&gt;
		end&lt;br /&gt;
	end;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;#categorytree&amp;quot;] = function (cat)&lt;br /&gt;
		if is_valid_pagename(cat) and not (mw.title.getCurrentTitle().fullText == (&amp;quot;Category:&amp;quot; .. cat)) then&lt;br /&gt;
			return (&amp;quot;[[:Category:&amp;quot; .. cat .. &amp;quot;|&amp;quot; .. cat .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			return cat&lt;br /&gt;
		end&lt;br /&gt;
	end;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;#invoke&amp;quot;] = function (mod)&lt;br /&gt;
		if is_valid_pagename(mod) and not (mw.title.getCurrentTitle().fullText == (&amp;quot;Module:&amp;quot; .. mod)) then&lt;br /&gt;
			return (&amp;quot;[[Module:%s|%s]]&amp;quot;):format(mod, mod)&lt;br /&gt;
		else&lt;br /&gt;
			return mod&lt;br /&gt;
		end&lt;br /&gt;
	end;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;#tag&amp;quot;] = function (tag)&lt;br /&gt;
		local doc_table = require(&amp;#039;Module:wikitag link&amp;#039;).doc_table&lt;br /&gt;
		if doc_table[tag] then&lt;br /&gt;
			return (&amp;quot;[[%s|%s]]&amp;quot;):format(doc_table[tag], tag)&lt;br /&gt;
		else&lt;br /&gt;
			return tag&lt;br /&gt;
		end&lt;br /&gt;
	end;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function export.format_link(frame)&lt;br /&gt;
	if mw.isSubsting() then&lt;br /&gt;
		return require(&amp;#039;Module:unsubst&amp;#039;).unsubst_template(&amp;quot;format_link&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local args = (frame.getParent and frame:getParent().args) or frame -- Allows function to be called from other modules.&lt;br /&gt;
	local output = { (frame.args and frame.args.nested) and &amp;quot;&amp;amp;#123;&amp;amp;#123;&amp;quot; or &amp;quot;&amp;lt;code&amp;gt;&amp;amp;#123;&amp;amp;#123;&amp;quot; }&lt;br /&gt;
	&lt;br /&gt;
	local templ = (frame.args and frame.args.annotate) or args[1]&lt;br /&gt;
	local noargs = (frame.args and not frame.args.annotate) and next(args) == nil&lt;br /&gt;
	&lt;br /&gt;
	if not templ then&lt;br /&gt;
		if mw.title.getCurrentTitle().fullText == frame:getParent():getTitle() then&lt;br /&gt;
			-- demo mode&lt;br /&gt;
			return &amp;quot;&amp;lt;code&amp;gt;{{&amp;lt;var&amp;gt;{{{1}}}&amp;lt;/var&amp;gt;|&amp;lt;var&amp;gt;{{{2}}}&amp;lt;/var&amp;gt;|...}}&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			error(&amp;quot;The template name must be given.&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function render_title(templ)&lt;br /&gt;
		local marker, rest&lt;br /&gt;
&lt;br /&gt;
		marker, rest = templ:match(&amp;quot;^([Ss][Uu][Bb][Ss][Tt]):(.*)&amp;quot;)&lt;br /&gt;
		if not marker then&lt;br /&gt;
			marker, rest = templ:match(&amp;quot;^([Ss][Aa][Ff][Ee][Ss][Uu][Bb][Ss][Tt]):(.*)&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		if marker then&lt;br /&gt;
			templ = rest&lt;br /&gt;
			table.insert(output, (&amp;quot;[[mw:Manual:Substitution|%s]]:&amp;quot;):format(marker))&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if noargs and variables_nullary[templ] then&lt;br /&gt;
			table.insert(output, (&amp;quot;[[%s|%s]]&amp;quot;):format(variables_nullary[templ], templ))&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		marker, rest = templ:match(&amp;quot;^([Mm][Ss][Gg][Nn][Ww]):(.*)&amp;quot;)&lt;br /&gt;
		if marker then&lt;br /&gt;
			templ = rest&lt;br /&gt;
			-- not the most accurate documentation ever&lt;br /&gt;
			table.insert(output, (&amp;quot;[[m:Help:Magic words#Template modifiers|%s]]:&amp;quot;):format(marker))&lt;br /&gt;
		else&lt;br /&gt;
			marker, rest = templ:match(&amp;quot;^([Mm][Ss][Gg]):(.*)&amp;quot;)&lt;br /&gt;
			if marker then&lt;br /&gt;
				templ = rest	&lt;br /&gt;
				table.insert(output, (&amp;quot;[[m:Help:Magic words#Template modifiers|%s]]:&amp;quot;):format(marker)) -- ditto&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		marker, rest = templ:match(&amp;quot;^([Rr][Aa][Ww]):(.*)&amp;quot;)&lt;br /&gt;
		if marker then&lt;br /&gt;
			table.insert(output, (&amp;quot;[[m:Help:Magic words#Template modifiers|%s]]:&amp;quot;):format(marker)) -- missingno.&lt;br /&gt;
			templ = rest	&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if templ:match(&amp;quot;^%s*/&amp;quot;) then&lt;br /&gt;
			table.insert(output, (&amp;quot;[[%s]]&amp;quot;):format(templ))&lt;br /&gt;
			return	&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		marker, rest = templ:match(&amp;quot;^(.-):(.*)&amp;quot;)&lt;br /&gt;
		if marker then&lt;br /&gt;
			local lcmarker = marker:lower()&lt;br /&gt;
			if parser_functions[lcmarker] then&lt;br /&gt;
				if parser_function_hooks[lcmarker] then&lt;br /&gt;
					rest = parser_function_hooks[lcmarker](rest)&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(output, (&amp;quot;[[%s|%s]]:%s&amp;quot;):format(mw.uri.encode(parser_functions[lcmarker], &amp;quot;WIKI&amp;quot;), marker, rest))&lt;br /&gt;
				return&lt;br /&gt;
			elseif variables_nonnullary[marker] then&lt;br /&gt;
				table.insert(output, (&amp;quot;[[%s|%s]]:%s&amp;quot;):format(variables_nonnullary[marker], marker, rest))&lt;br /&gt;
				return&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if not is_valid_pagename(templ) then&lt;br /&gt;
			table.insert(output, templ)&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if marker then&lt;br /&gt;
			if mw.site.namespaces[marker] then&lt;br /&gt;
				if (title == &amp;quot;&amp;quot;) or (mw.title.getCurrentTitle().fullText == templ) then -- ?? no such variable &amp;quot;title&amp;quot;&lt;br /&gt;
					table.insert(output, templ)&lt;br /&gt;
				elseif marker == &amp;quot;&amp;quot; and templ:find(&amp;quot;^:&amp;quot;) then&lt;br /&gt;
					-- for cases such as {{temp|:entry}}; MediaWiki displays [[:entry]] without a colon, like [[entry]], but colon should be shown&lt;br /&gt;
					table.insert(output, (&amp;quot;[[%s|%s]]&amp;quot;):format(templ, templ))&lt;br /&gt;
				else&lt;br /&gt;
					table.insert(output, (&amp;quot;[[:%s|%s]]&amp;quot;):format(templ, templ))&lt;br /&gt;
				end&lt;br /&gt;
				return&lt;br /&gt;
			elseif mw.site.interwikiMap()[marker:lower()] then&lt;br /&gt;
				-- XXX: not sure what to do now…&lt;br /&gt;
				table.insert(output, (&amp;quot;[[:%s:|%s]]:%s&amp;quot;):format(marker, marker, rest))&lt;br /&gt;
				return&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if (templ == &amp;quot;&amp;quot;) or (mw.title.getCurrentTitle().fullText == (&amp;quot;Template:&amp;quot; .. templ)) then&lt;br /&gt;
			table.insert(output, templ)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(output, (&amp;quot;[[Template:%s|%s]]&amp;quot;):format(templ, templ))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	render_title(templ)&lt;br /&gt;
&lt;br /&gt;
	local i = (frame.args and frame.args.annotate) and 1 or 2&lt;br /&gt;
	while args[i] do&lt;br /&gt;
		table.insert(output, &amp;quot;&amp;amp;#124;&amp;quot; .. args[i])&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for key, value in require(&amp;quot;Module:table&amp;quot;).sortedPairs(args) do&lt;br /&gt;
		if type(key) == &amp;quot;string&amp;quot; then&lt;br /&gt;
			table.insert(output, &amp;quot;&amp;amp;#124;&amp;quot; .. key .. &amp;quot;=&amp;quot; .. value)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(output, (frame.args and frame.args.nested) and &amp;quot;&amp;amp;#125;&amp;amp;#125;&amp;quot; or &amp;quot;&amp;amp;#125;&amp;amp;#125;&amp;lt;/code&amp;gt;&amp;quot;)&lt;br /&gt;
	return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Chrysophylax</name></author>
	</entry>
</feed>