<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.czzzz.work/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=50.53.12.84</id>
	<title>悠日計画 維基百科 ～ Yuuni Wiki - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.czzzz.work/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=50.53.12.84"/>
	<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/50.53.12.84"/>
	<updated>2026-05-12T07:49:02Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:Tlm&amp;diff=1352</id>
		<title>模块:Tlm</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:Tlm&amp;diff=1352"/>
		<updated>2021-12-31T19:50:27Z</updated>

		<summary type="html">&lt;p&gt;50.53.12.84：​consolidate wikidata property hooks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local export = {}&lt;br /&gt;
&lt;br /&gt;
local variables_nullary = {&lt;br /&gt;
	[&amp;quot;CURRENTYEAR&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTMONTH&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTMONTH1&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;; -- undocumented&lt;br /&gt;
	[&amp;quot;CURRENTMONTH2&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;; -- undocumented&lt;br /&gt;
	[&amp;quot;CURRENTMONTHNAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTMONTHNAMEGEN&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTMONTHABBREV&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTDAY&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTDAY2&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTDOW&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTDAYNAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTTIME&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTHOUR&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTWEEK&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTTIMESTAMP&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;LOCALYEAR&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;LOCALMONTH&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;LOCALMONTH1&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;; -- undocumented&lt;br /&gt;
	[&amp;quot;LOCALMONTH2&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;; -- undocumented&lt;br /&gt;
	[&amp;quot;LOCALMONTHNAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;LOCALMONTHNAMEGEN&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;LOCALMONTHABBREV&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;LOCALDAY&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;LOCALDAY2&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;LOCALDOW&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;LOCALDAYNAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;LOCALTIME&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;LOCALHOUR&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;LOCALWEEK&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
	[&amp;quot;LOCALTIMESTAMP&amp;quot;] = &amp;quot;mw:Help:Magic words#Date and time&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;SITENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;SERVER&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;SERVERNAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;DIRMARK&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;DIRECTIONMARK&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;ARTICLEPATH&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;; -- undocumented&lt;br /&gt;
	[&amp;quot;SCRIPTPATH&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;STYLEPATH&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;CURRENTVERSION&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;CONTENTLANGUAGE&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;CONTENTLANG&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;PAGEID&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;CASCADINGSOURCES&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;REVISIONID&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONDAY&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONDAY2&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONMONTH&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONMONTH1&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONYEAR&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONTIMESTAMP&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONUSER&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONSIZE&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;NUMBEROFPAGES&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;NUMBEROFARTICLES&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;NUMBEROFFILES&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;NUMBEROFEDITS&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;NUMBEROFVIEWS&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;NUMBEROFUSERS&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;NUMBEROFADMINS&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;NUMBEROFACTIVEUSERS&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;FULLPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;PAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;BASEPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;SUBPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;SUBJECTPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;ARTICLEPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;TALKPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;ROOTPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;; -- undocumented&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;FULLPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;PAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;BASEPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;SUBPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;SUBJECTPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;ARTICLEPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;TALKPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;ROOTPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;; -- undocumented&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;NAMESPACE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;NAMESPACENUMBER&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;SUBJECTSPACE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;ARTICLESPACE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;TALKSPACE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;NAMESPACEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;SUBJECTSPACEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;TALKSPACEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&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;
	-- case-insensitive!&lt;br /&gt;
	[&amp;quot;noexternallanglinks&amp;quot;] = &amp;quot;mw:Extension:Wikibase Client&amp;quot;;&lt;br /&gt;
 	[&amp;quot;pendingchangelevel&amp;quot;] = &amp;quot;mw:Extension:FlaggedRevs&amp;quot;; -- not documented yet&lt;br /&gt;
	[&amp;quot;numberofwikis&amp;quot;] = &amp;quot;mw:Extension:SiteMatrix&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local variables_nonnullary = {&lt;br /&gt;
	[&amp;quot;PROTECTIONLEVEL&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;DISPLAYTITLE&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;DEFAULTSORT&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;PAGESINCATEGORY&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;PAGESINCAT&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;NUMBERINGROUP&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;PAGESINNS&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
	[&amp;quot;PAGESINNAMESPACE&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;FULLPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;PAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;BASEPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;SUBPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;SUBJECTPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;ARTICLEPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;TALKPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;ROOTPAGENAME&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;; -- undocumented&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;FULLPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;PAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;BASEPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;SUBPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;SUBJECTPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;ARTICLEPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;TALKPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;;&lt;br /&gt;
	[&amp;quot;ROOTPAGENAMEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Page names&amp;quot;; -- undocumented&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;NAMESPACE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;NAMESPACENUMBER&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;SUBJECTSPACE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;ARTICLESPACE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;TALKSPACE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;NAMESPACEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;SUBJECTSPACEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;TALKSPACEE&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;PAGEID&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;;&lt;br /&gt;
	[&amp;quot;PAGESIZE&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;;&lt;br /&gt;
	[&amp;quot;PROTECTIONLEVEL&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;;&lt;br /&gt;
	[&amp;quot;CASCADINGSOURCES&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONID&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONDAY&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONDAY2&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONMONTH&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONMONTH1&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONYEAR&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONTIMESTAMP&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;;&lt;br /&gt;
	[&amp;quot;REVISIONUSER&amp;quot;] = &amp;quot;mw:Help:Magic words#Technical metadata of another page&amp;quot;;&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;] = &amp;quot;mw:Help:Magic words#URL data&amp;quot;;&lt;br /&gt;
	[&amp;quot;localurle&amp;quot;] = &amp;quot;mw:Help:Magic words#URL data&amp;quot;;&lt;br /&gt;
	[&amp;quot;fullurl&amp;quot;] = &amp;quot;mw:Help:Magic words#URL data&amp;quot;;&lt;br /&gt;
	[&amp;quot;fullurle&amp;quot;] = &amp;quot;mw:Help:Magic words#URL data&amp;quot;;&lt;br /&gt;
	[&amp;quot;canonicalurl&amp;quot;] = &amp;quot;mw:Help:Magic words#URL data&amp;quot;;&lt;br /&gt;
	[&amp;quot;canonicalurle&amp;quot;] = &amp;quot;mw:Help:Magic words#URL data&amp;quot;;&lt;br /&gt;
	[&amp;quot;filepath&amp;quot;] = &amp;quot;mw:Help:Magic words#URL data&amp;quot;;&lt;br /&gt;
	[&amp;quot;urlencode&amp;quot;] = &amp;quot;mw:Help:Magic words#URL data&amp;quot;;&lt;br /&gt;
	[&amp;quot;urldecode&amp;quot;] = &amp;quot;mw:Help:Magic words#URL data&amp;quot;;&lt;br /&gt;
	[&amp;quot;anchorencode&amp;quot;] = &amp;quot;mw:Help:Magic words#URL data&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;ns&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
	[&amp;quot;nse&amp;quot;] = &amp;quot;mw:Help:Magic words#Namespaces&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;formatnum&amp;quot;] = &amp;quot;mw:Help:Magic words#Formatting&amp;quot;;&lt;br /&gt;
	[&amp;quot;#dateformat&amp;quot;] = &amp;quot;mw:Help:Magic words#Formatting&amp;quot;;&lt;br /&gt;
	[&amp;quot;#formatdate&amp;quot;] = &amp;quot;mw:Help:Magic words#Formatting&amp;quot;;&lt;br /&gt;
	[&amp;quot;lc&amp;quot;] = &amp;quot;mw:Help:Magic words#Formatting&amp;quot;;&lt;br /&gt;
	[&amp;quot;lcfirst&amp;quot;] = &amp;quot;mw:Help:Magic words#Formatting&amp;quot;;&lt;br /&gt;
	[&amp;quot;uc&amp;quot;] = &amp;quot;mw:Help:Magic words#Formatting&amp;quot;;&lt;br /&gt;
	[&amp;quot;ucfirst&amp;quot;] = &amp;quot;mw:Help:Magic words#Formatting&amp;quot;;&lt;br /&gt;
	[&amp;quot;padleft&amp;quot;] = &amp;quot;mw:Help:Magic words#Formatting&amp;quot;;&lt;br /&gt;
	[&amp;quot;padright&amp;quot;] = &amp;quot;mw:Help:Magic words#Formatting&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;plural&amp;quot;] = &amp;quot;mw:Help:Magic words#Localization&amp;quot;;&lt;br /&gt;
	[&amp;quot;grammar&amp;quot;] = &amp;quot;mw:Help:Magic words#Localization&amp;quot;;&lt;br /&gt;
	[&amp;quot;gender&amp;quot;] = &amp;quot;mw:Help:Magic words#Localization&amp;quot;;&lt;br /&gt;
	[&amp;quot;int&amp;quot;] = &amp;quot;mw:Help:Magic words#Localization&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;#language&amp;quot;] = &amp;quot;mw:Help:Magic words#Miscellaneous&amp;quot;;&lt;br /&gt;
	[&amp;quot;#special&amp;quot;] = &amp;quot;mw:Help:Magic words#Miscellaneous&amp;quot;;&lt;br /&gt;
	[&amp;quot;#speciale&amp;quot;] = &amp;quot;mw:Help:Magic words#Miscellaneous&amp;quot;;&lt;br /&gt;
	[&amp;quot;#tag&amp;quot;] = &amp;quot;mw:Help:Magic words#Miscellaneous&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	-- [[mw:Extension:ParserFunctions]]&lt;br /&gt;
	[&amp;quot;#expr&amp;quot;] = &amp;quot;mw:Help:Extension:ParserFunctions##expr&amp;quot;;&lt;br /&gt;
	[&amp;quot;#if&amp;quot;] = &amp;quot;mw:Help:Extension:ParserFunctions##if&amp;quot;;&lt;br /&gt;
	[&amp;quot;#ifeq&amp;quot;] = &amp;quot;mw:Help:Extension:ParserFunctions##ifeq&amp;quot;;&lt;br /&gt;
	[&amp;quot;#iferror&amp;quot;] = &amp;quot;mw:Help:Extension:ParserFunctions##iferror&amp;quot;;&lt;br /&gt;
	[&amp;quot;#ifexpr&amp;quot;] = &amp;quot;mw:Help:Extension:ParserFunctions##ifexpr&amp;quot;;&lt;br /&gt;
	[&amp;quot;#ifexist&amp;quot;] = &amp;quot;mw:Help:Extension:ParserFunctions##ifexist&amp;quot;;&lt;br /&gt;
	[&amp;quot;#rel2abs&amp;quot;] = &amp;quot;mw:Help:Extension:ParserFunctions##rel2abs&amp;quot;;&lt;br /&gt;
	[&amp;quot;#switch&amp;quot;] = &amp;quot;mw:Help:Extension:ParserFunctions##switch&amp;quot;;&lt;br /&gt;
	[&amp;quot;#time&amp;quot;] = &amp;quot;mw:Help:Extension:ParserFunctions##time&amp;quot;;&lt;br /&gt;
	[&amp;quot;#timel&amp;quot;] = &amp;quot;mw:Help:Extension:ParserFunctions##timel&amp;quot;;&lt;br /&gt;
	[&amp;quot;#titleparts&amp;quot;] = &amp;quot;mw:Help:Extension:ParserFunctions##titleparts&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	-- other extensions&lt;br /&gt;
 	[&amp;quot;#babel&amp;quot;] = &amp;quot;mw:Extension:Babel#Usage&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;#coordinates&amp;quot;] = &amp;quot;mw:Extension:GeoData#Parser function&amp;quot;;&lt;br /&gt;
	[&amp;quot;#invoke&amp;quot;] = &amp;quot;mw:Extension:Scribunto#Usage&amp;quot;;&lt;br /&gt;
 	[&amp;quot;#lst&amp;quot;] = &amp;quot;mw:Extension:Labeled Section Transclusion#How it works&amp;quot;;&lt;br /&gt;
 	[&amp;quot;#lsth&amp;quot;] = &amp;quot;mw:Extension:Labeled Section Transclusion#How it works&amp;quot;; -- not available, it seems&lt;br /&gt;
 	[&amp;quot;#lstx&amp;quot;] = &amp;quot;mw:Extension:Labeled Section Transclusion#How it works&amp;quot;;&lt;br /&gt;
	[&amp;quot;noexternallanglinks&amp;quot;] = &amp;quot;mw:Extension:Wikibase Client&amp;quot;;&lt;br /&gt;
 	[&amp;quot;pendingchangelevel&amp;quot;] = &amp;quot;mw:Extension:FlaggedRevs&amp;quot;; -- not documented yet&lt;br /&gt;
 	[&amp;quot;#property&amp;quot;] = &amp;quot;mw:Extension:Wikibase Client&amp;quot;;&lt;br /&gt;
 	[&amp;quot;#statements&amp;quot;] = &amp;quot;mw:Extension:Wikibase Client&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 function hook_wdprop(name)&lt;br /&gt;
	if mw.wikibase.resolvePropertyId(name) then&lt;br /&gt;
		return (&amp;quot;[[:d:Special:EntityPage/%s|%s]]&amp;quot;):format(mw.wikibase.resolvePropertyId(name), name)&lt;br /&gt;
	else&lt;br /&gt;
		return name&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(&#039;Module:wikitag link&#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;
	[&amp;quot;#property&amp;quot;] = hook_wdprop;&lt;br /&gt;
	[&amp;quot;#statements&amp;quot;] = hook_wdprop;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function export.format_link(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local output = { 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 = args[1]&lt;br /&gt;
	local noargs = true&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;
	for key, value in pairs(args) do&lt;br /&gt;
		if key ~= 1 then&lt;br /&gt;
			noargs = false&lt;br /&gt;
			break&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 templ:match(&amp;quot;[%[%]%|%{%}#\127&amp;lt;&amp;gt;]&amp;quot;) 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&lt;br /&gt;
					table.insert(output, 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 = 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 pairs(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.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>50.53.12.84</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:LuaCall&amp;diff=1451</id>
		<title>模块:LuaCall</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:LuaCall&amp;diff=1451"/>
		<updated>2021-12-29T04:21:53Z</updated>

		<summary type="html">&lt;p&gt;50.53.12.84：​convert &amp;quot;invoke&amp;quot; to do a true #invoke off the parent frame instead of mangling the frame args and attempting to emulate a #invoke as the emulation is error prone and can easily be detected&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p={}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local parent=frame.getParent(frame) or {}&lt;br /&gt;
    local reserved_value={}&lt;br /&gt;
    local reserved_function,reserved_contents&lt;br /&gt;
    for k,v in pairs(parent.args or {}) do&lt;br /&gt;
        _G[k]=tonumber(v) or v -- transfer every parameter directly to the global variable table&lt;br /&gt;
    end&lt;br /&gt;
    for k,v in pairs(frame.args or {}) do&lt;br /&gt;
        _G[k]=tonumber(v) or v -- transfer every parameter directly to the global variable table&lt;br /&gt;
    end&lt;br /&gt;
     --- Alas Scribunto does NOT implement coroutines, according to&lt;br /&gt;
     --- http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#string.format&lt;br /&gt;
     --- this will not stop us from trying to implement one single lousy function call&lt;br /&gt;
    if _G[1] then&lt;br /&gt;
        reserved_function,reserved_contents=mw.ustring.match(_G[1],&amp;quot;^%s*(%a[^%s%(]*)%(([^%)]*)%)%s*$&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    if reserved_contents then&lt;br /&gt;
        local reserved_counter=0&lt;br /&gt;
        repeat&lt;br /&gt;
            reserved_counter=reserved_counter+1&lt;br /&gt;
            reserved_value[reserved_counter]=_G[mw.ustring.match(reserved_contents,&amp;quot;([^%,]+)&amp;quot;)]&lt;br /&gt;
            reserved_contents=mw.ustring.match(reserved_contents,&amp;quot;[^%,]+,(.*)$&amp;quot;)&lt;br /&gt;
        until not reserved_contents&lt;br /&gt;
    end&lt;br /&gt;
    local reserved_arraypart=_G&lt;br /&gt;
    while mw.ustring.match(reserved_function,&amp;quot;%.&amp;quot;) do&lt;br /&gt;
        reserved_functionpart,reserved_function=mw.ustring.match(reserved_function,&amp;quot;^(%a[^%.]*)%.(.*)$&amp;quot;)&lt;br /&gt;
        reserved_arraypart=reserved_arraypart[reserved_functionpart]&lt;br /&gt;
    end&lt;br /&gt;
    local reserved_call=reserved_arraypart[reserved_function]&lt;br /&gt;
    if type(reserved_call)~=&amp;quot;function&amp;quot; then&lt;br /&gt;
        return tostring(reserved_call)&lt;br /&gt;
    else reserved_output={reserved_call(unpack(reserved_value))}&lt;br /&gt;
        return reserved_output[reserved_return or 1]&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tonumberOrString(v)&lt;br /&gt;
	return tonumber(v) or v:gsub(&amp;quot;^\\&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function callWithTonumberOrStringOnPairs(f, ...)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for _, v in ... do&lt;br /&gt;
		table.insert(args, tonumberOrString(v))&lt;br /&gt;
	end&lt;br /&gt;
	return (f(unpack(args)))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- ipairsAtOffset&lt;br /&gt;
&lt;br /&gt;
-- This is an iterator for arrays. It can be used like ipairs, but with&lt;br /&gt;
-- specified i as first index to iterate. i is an offset from 1&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
local function ipairsAtOffset(t, i)&lt;br /&gt;
	local f, s, i0 = ipairs(t)&lt;br /&gt;
	return f, s, i0+i&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get(s)&lt;br /&gt;
	local G = _G; for _ in mw.text.gsplit(&lt;br /&gt;
		mw.text.trim(s, &#039;%s&#039;), &#039;%s*%.%s*&#039;&lt;br /&gt;
	) do&lt;br /&gt;
		G = G[_]&lt;br /&gt;
	end&lt;br /&gt;
	return G&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- call&lt;br /&gt;
--&lt;br /&gt;
-- This function is usually useful for debugging template parameters.&lt;br /&gt;
-- Prefix parameter with backslash (\) to force interpreting parameter as string.&lt;br /&gt;
-- The leading backslash will be removed before passed to Lua function.&lt;br /&gt;
--&lt;br /&gt;
-- Example:&lt;br /&gt;
--    {{#invoke:LuaCall|call|mw.log|a|1|2|3}} will return results of mw.log(&#039;a&#039;, 1, 2, 3)&lt;br /&gt;
--    {{#invoke:LuaCall|call|mw.logObject|\a|321|\321| \321 }} will return results of mw.logObject(&#039;a&#039;, 321, &#039;321&#039;, &#039; \\321 &#039;)&lt;br /&gt;
--&lt;br /&gt;
-- This example show the debugging to see which Unicode characters are allowed in template parameters,&lt;br /&gt;
--    {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0061}}}} return 97&lt;br /&gt;
--    {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0000}}}} return 65533&lt;br /&gt;
--    {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0001}}}} return 65533&lt;br /&gt;
--    {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0002}}}}}} return 0xfffd&lt;br /&gt;
--    {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x007e}}}}}} return 0x007e&lt;br /&gt;
--    {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x007f}}}}}} return 0x007f&lt;br /&gt;
--    {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0080}}}}}} return 0x0080&lt;br /&gt;
--    {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x00a0}}}}}} return 0x00a0&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.call(frame)&lt;br /&gt;
	return callWithTonumberOrStringOnPairs(get(frame.args[1]),&lt;br /&gt;
		ipairsAtOffset(frame.args, 1)&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--local TableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- get&lt;br /&gt;
--&lt;br /&gt;
-- Example:&lt;br /&gt;
--    {{#invoke:LuaCall|get| math.pi }} will return value of math.pi&lt;br /&gt;
--    {{#invoke:LuaCall|get|math|pi}} will return value of math.pi&lt;br /&gt;
--    {{#invoke:LuaCall|get| math |pi}} will return value of _G[&#039; math &#039;].pi&lt;br /&gt;
--    {{#invoke:LuaCall|get|_G| math.pi }} will return value of _G[&#039; math.pi &#039;]&lt;br /&gt;
--    {{#invoke:LuaCall|get|obj.a.5.c}} will return value of obj.a[&#039;5&#039;].c&lt;br /&gt;
--    {{#invoke:LuaCall|get|obj|a|5|c}} will return value of obj.a[5].c&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.get(frame)&lt;br /&gt;
	-- #frame.args always return 0, regardless of number of unnamed&lt;br /&gt;
	-- template parameters, so check manually instead&lt;br /&gt;
	if frame.args[2] == nil then&lt;br /&gt;
		-- not do tonumber() for this args style,&lt;br /&gt;
		-- always treat it as string,&lt;br /&gt;
		-- so &#039;obj.1&#039; will mean obj[&#039;1&#039;] rather obj[1]&lt;br /&gt;
		return get(frame.args[1])&lt;br /&gt;
	else&lt;br /&gt;
		local G = _G&lt;br /&gt;
		for _, v in ipairs(frame.args) do&lt;br /&gt;
			G = G[tonumberOrString(v)]&lt;br /&gt;
		end&lt;br /&gt;
		return G&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- invoke&lt;br /&gt;
--&lt;br /&gt;
-- This function is used by Template:Invoke&lt;br /&gt;
--&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.invoke(frame)&lt;br /&gt;
	local pframe, usedpargs = frame:getParent(), {}&lt;br /&gt;
	-- get module and function names from parent args if not provided&lt;br /&gt;
	local pfargs = setmetatable({frame.args[1], frame.args[2]}, {__index = table})&lt;br /&gt;
	if not pfargs[1] then&lt;br /&gt;
		pfargs[1], usedpargs[1] = pframe.args[1], true&lt;br /&gt;
		if not pfargs[2] then&lt;br /&gt;
			pfargs[2], usedpargs[2] = pframe.args[2], true&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if not pfargs[2] then&lt;br /&gt;
			pfargs[2], usedpargs[1] = pframe.args[1], true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- repack sequential args&lt;br /&gt;
	for i, v in ipairs(pframe.args) do&lt;br /&gt;
		if not usedpargs[i] then&lt;br /&gt;
			pfargs:insert(v)&lt;br /&gt;
			usedpargs[i] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- copy other args&lt;br /&gt;
	for k, v in pairs(pframe.args) do&lt;br /&gt;
		if not pfargs[k] and not usedpargs[k] then&lt;br /&gt;
			pfargs[k], usedpargs[k] = v, true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- #invoke off parent frame so the new frame has the same parent&lt;br /&gt;
	return pframe:callParserFunction{name = &#039;#invoke&#039;, args = pfargs}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>50.53.12.84</name></author>
	</entry>
</feed>