<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://odden.us:443/thadar/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ADocumentation</id>
	<title>Module:Documentation - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://odden.us:443/thadar/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ADocumentation"/>
	<link rel="alternate" type="text/html" href="https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;action=history"/>
	<updated>2026-04-11T03:36:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;diff=1663&amp;oldid=prev</id>
		<title>Oa10712: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;diff=1663&amp;oldid=prev"/>
		<updated>2022-12-27T00:46:36Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:46, 26 December 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Oa10712</name></author>
	</entry>
	<entry>
		<id>https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;diff=1662&amp;oldid=prev</id>
		<title>en&gt;Andrybak: update code comment according to Special:Diff/989669779</title>
		<link rel="alternate" type="text/html" href="https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;diff=1662&amp;oldid=prev"/>
		<updated>2022-09-29T01:57:36Z</updated>

		<summary type="html">&lt;p&gt;update code comment according to &lt;a href=&quot;/thadar/wiki/index.php?title=Special:Diff/989669779&quot; title=&quot;Special:Diff/989669779&quot;&gt;Special:Diff/989669779&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:57, 28 September 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l349&quot;&gt;Line 349:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 349:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	--  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	--  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- Messages:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- Messages:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- &#039;sandbox-notice-image&#039; --&amp;gt; &#039;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Image&lt;/del&gt;:Sandbox.svg|50px|alt=|link=]]&#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- &#039;sandbox-notice-image&#039; --&amp;gt; &#039;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;File&lt;/ins&gt;:Sandbox.svg|50px|alt=|link=]]&#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- &amp;#039;sandbox-notice-blurb&amp;#039; --&amp;gt; &amp;#039;This is the $1 for $2.&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- &amp;#039;sandbox-notice-blurb&amp;#039; --&amp;gt; &amp;#039;This is the $1 for $2.&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- &amp;#039;sandbox-notice-diff-blurb&amp;#039; --&amp;gt; &amp;#039;This is the $1 for $2 ($3).&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- &amp;#039;sandbox-notice-diff-blurb&amp;#039; --&amp;gt; &amp;#039;This is the $1 for $2 ($3).&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>en&gt;Andrybak</name></author>
	</entry>
	<entry>
		<id>https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;diff=1122&amp;oldid=prev</id>
		<title>Oa10712: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;diff=1122&amp;oldid=prev"/>
		<updated>2022-09-06T03:23:46Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:23, 5 September 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Oa10712</name></author>
	</entry>
	<entry>
		<id>https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;diff=771&amp;oldid=prev</id>
		<title>Oa10712: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;diff=771&amp;oldid=prev"/>
		<updated>2022-08-28T03:37:59Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:37, 27 August 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Oa10712</name></author>
	</entry>
	<entry>
		<id>https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;diff=770&amp;oldid=prev</id>
		<title>en&gt;Matt Fitzpatrick: sync from sandbox, add aria role and label to container</title>
		<link rel="alternate" type="text/html" href="https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;diff=770&amp;oldid=prev"/>
		<updated>2022-01-16T01:32:10Z</updated>

		<summary type="html">&lt;p&gt;sync from sandbox, add aria role and label to container&lt;/p&gt;
&lt;a href=&quot;https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;amp;diff=770&amp;amp;oldid=1121&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>en&gt;Matt Fitzpatrick</name></author>
	</entry>
	<entry>
		<id>https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;diff=1121&amp;oldid=prev</id>
		<title>en&gt;Benwing2: handle lang-specific poscatboiler data modules such as Module:category tree/poscatboiler/data/lang-specific/ajp, rewrite documentation on `module_regex`, clean it up</title>
		<link rel="alternate" type="text/html" href="https://odden.us:443/thadar/wiki/index.php?title=Module:Documentation&amp;diff=1121&amp;oldid=prev"/>
		<updated>2021-12-19T02:51:37Z</updated>

		<summary type="html">&lt;p&gt;handle lang-specific poscatboiler data modules such as &lt;a href=&quot;/thadar/wiki/index.php?title=Module:Category_tree/poscatboiler/data/lang-specific/ajp&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Module:Category tree/poscatboiler/data/lang-specific/ajp (page does not exist)&quot;&gt;Module:category tree/poscatboiler/data/lang-specific/ajp&lt;/a&gt;, rewrite documentation on `module_regex`, clean it up&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;
-- it is either here, or in [[Module:ugly hacks]], and it is not in ugly hacks.&lt;br /&gt;
function export.CONTENTMODEL()&lt;br /&gt;
	return mw.title.getCurrentTitle().contentModel&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local skins = {&lt;br /&gt;
	[&amp;quot;common&amp;quot;     ] = &amp;quot;&amp;quot;;&lt;br /&gt;
	[&amp;quot;vector&amp;quot;     ] = &amp;quot;Vector&amp;quot;;&lt;br /&gt;
	[&amp;quot;monobook&amp;quot;   ] = &amp;quot;Monobook&amp;quot;;&lt;br /&gt;
	[&amp;quot;cologneblue&amp;quot;] = &amp;quot;Cologne Blue&amp;quot;;&lt;br /&gt;
	[&amp;quot;modern&amp;quot;     ] = &amp;quot;Modern&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local Array = require &amp;quot;Module:array&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local function compare_pages(page1, page2, text)&lt;br /&gt;
	return &amp;quot;[&amp;quot; .. tostring(&lt;br /&gt;
		mw.uri.fullUrl(&amp;quot;Special:ComparePages&amp;quot;, { page1 = page1, page2 = page2 }))&lt;br /&gt;
		.. &amp;quot; &amp;quot; .. text .. &amp;quot;]&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function page_exists(title)&lt;br /&gt;
	local success, title_obj = pcall(mw.title.new, title)&lt;br /&gt;
	return success and title_obj.exists&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Avoid transcluding [[Module:languages/cache]] everywhere.&lt;br /&gt;
local lang_cache = setmetatable({}, { __index = function (self, k)&lt;br /&gt;
	return require &amp;quot;Module:languages/cache&amp;quot;[k]&lt;br /&gt;
end })&lt;br /&gt;
&lt;br /&gt;
local function zh_link(word)&lt;br /&gt;
	return require(&amp;quot;Module:links&amp;quot;).full_link{&lt;br /&gt;
		lang = lang_cache.zh,&lt;br /&gt;
		term = word&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_Unicode_data_documentation(title, cats)&lt;br /&gt;
	local subpage, first_three_of_code_point&lt;br /&gt;
		= title.fullText:match(&amp;quot;^Module:Unicode data/([^/]+)/(%x%x%x)$&amp;quot;)&lt;br /&gt;
	if subpage == &amp;quot;names&amp;quot; or subpage == &amp;quot;images&amp;quot; then&lt;br /&gt;
		local low, high =&lt;br /&gt;
			tonumber(first_three_of_code_point .. &amp;quot;000&amp;quot;, 16),&lt;br /&gt;
			tonumber(first_three_of_code_point .. &amp;quot;FFF&amp;quot;, 16)&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&amp;quot;This data module contains the %s of &amp;quot; ..&lt;br /&gt;
			&amp;quot;[[Appendix:Unicode|Unicode]] code points within the range U+%04X to U+%04X.&amp;quot;,&lt;br /&gt;
			subpage == &amp;quot;images&amp;quot; and &amp;quot;titles of images&amp;quot; or &amp;quot;names&amp;quot;,&lt;br /&gt;
			low, high)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This provides categories and documentation for various data modules, so that&lt;br /&gt;
-- [[Category:Uncategorized modules]] isn’t unnecessarily cluttered.&lt;br /&gt;
-- It is a list of tables, each of which have the following possible fields:&lt;br /&gt;
&lt;br /&gt;
-- `regex` (required): A Lua pattern to match the module&amp;#039;s title. If it matches, the data in this entry will be used.&lt;br /&gt;
-- Any captures in the pattern can by referenced in the `cat` field using %1 for the first capture, %2 for the&lt;br /&gt;
-- second, etc. (often used for creating the sortkey for the category). In addition, the captures are passed to the&lt;br /&gt;
-- `process` function as the third and subsequent parameters.&lt;br /&gt;
&lt;br /&gt;
-- `process` (optional): This may be a function or a string. If it is a function, it is called as follows:&lt;br /&gt;
--    process(TITLE, CATS, CAPTURE1, CAPTURE2, ...)&lt;br /&gt;
-- where:&lt;br /&gt;
--    * TITLE is a title object describing the module&amp;#039;s title; see [https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Title_objects].&lt;br /&gt;
--    * CATS is an array object (see [[Module:array]]) of categories that the module will be added to.&lt;br /&gt;
--    * CAPTURE1, CAPTURE2, ... contain any captures in the `regex` field.&lt;br /&gt;
-- The return value of `process` should be a string and will be used as the module&amp;#039;s documentation.&lt;br /&gt;
-- If `process` is a string, it is the name of a submodule under &amp;#039;Module:documentation/functions/&amp;#039; which returns a&lt;br /&gt;
-- function, of the same type as described above. If `process` is omitted entirely, the module will have no&lt;br /&gt;
-- documentation.&lt;br /&gt;
&lt;br /&gt;
-- `cat` (optional): A string naming the category into which the module should be placed. Captures specified in `regex`&lt;br /&gt;
-- may be referenced in this string using %1 for the first capture, %2 for the second, etc. Currently, in order to put&lt;br /&gt;
-- the module into multiple categories, you need to write a `process` function that adds categories to the CATS&lt;br /&gt;
-- parameter passed in.&lt;br /&gt;
local module_regex = {&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:languages/.+$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Language and script modules&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:scripts/.+$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Language and script modules&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:data tables/data..?.?.?$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Reference module sharded data tables&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:Quotations/...?.?.?.?.?.?$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Quotation data modules&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:zh/data/dial%-pron/.+$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Chinese dialectal pronunciation data modules&amp;quot;,&lt;br /&gt;
		process = &amp;quot;zh dial or syn&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:zh/data/dial%-syn/.+$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Chinese dialectal synonyms data modules&amp;quot;,&lt;br /&gt;
		process = &amp;quot;zh dial or syn&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:zh/data/glyph%-data/.+$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Chinese historical character forms data modules&amp;quot;,&lt;br /&gt;
		process = function(title, cats)&lt;br /&gt;
			local character = title.fullText:match(&amp;quot;^Module:zh/data/glyph%-data/(.+)&amp;quot;)&lt;br /&gt;
			if character then&lt;br /&gt;
				return (&amp;quot;This module contains data on historical forms of the Chinese character %s.&amp;quot;)&lt;br /&gt;
					:format(zh_link(character))&lt;br /&gt;
			end&lt;br /&gt;
		end,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:zh/data/ltc%-pron/(.+)$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Middle Chinese pronunciation data modules|%1&amp;quot;,&lt;br /&gt;
		process = &amp;quot;zh data&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:zh/data/och%-pron%-BS/(.+)$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Old Chinese (Baxter-Sagart) pronunciation data modules|%1&amp;quot;,&lt;br /&gt;
		process = &amp;quot;zh data&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:zh/data/och%-pron%-ZS/(.+)$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Old Chinese (Zhengzhang) pronunciation data modules|%1&amp;quot;,&lt;br /&gt;
		process = &amp;quot;zh data&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		-- capture rest of zh/data submodules&lt;br /&gt;
		regex = &amp;quot;^Module:zh/data/(.+)$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Chinese data modules|%1&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:mul/guoxue%-data/cjk%-?(.*)$&amp;quot;,&lt;br /&gt;
		process = &amp;quot;guoxue-data&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:Unicode data/(.+)$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Unicode data modules|%1&amp;quot;,&lt;br /&gt;
		process = make_Unicode_data_documentation,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:number list/data/(.+)$&amp;quot;,&lt;br /&gt;
		process = &amp;quot;number list&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:accel/(.+)$&amp;quot;,&lt;br /&gt;
		process = function(title, cats)&lt;br /&gt;
			local lang_code = title.subpageText&lt;br /&gt;
			local lang = lang_cache[lang_code]&lt;br /&gt;
			if lang then&lt;br /&gt;
				cats:insert(lang:getCanonicalName() .. &amp;quot; modules|accel&amp;quot;)&lt;br /&gt;
				cats:insert((&amp;quot;Accel submodules|%s&amp;quot;):format(lang:getCanonicalName()))&lt;br /&gt;
				return (&amp;quot;This module contains new entry creation rules for %s; see [[WT:ACCEL]] for an overview, and [[Module:accel]] for information on creating new rules.&amp;quot;)&lt;br /&gt;
					:format(lang:makeCategoryLink())&lt;br /&gt;
			end&lt;br /&gt;
		end,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:inc%-ash/dial/data/(.+)$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Ashokan Prakrit modules|%1&amp;quot;,&lt;br /&gt;
		process = function(title, cats)&lt;br /&gt;
			local word = title.fullText:match(&amp;quot;^Module:inc%-ash/dial/data/(.+)$&amp;quot;)&lt;br /&gt;
			if word then&lt;br /&gt;
				local lang = lang_cache[&amp;quot;inc-ash&amp;quot;]&lt;br /&gt;
				return (&amp;quot;This module contains data on the pronunciation of %s in dialects of %s.&amp;quot;)&lt;br /&gt;
					:format(require(&amp;quot;Module:links&amp;quot;).full_link({ term = word, lang = lang }, &amp;quot;term&amp;quot;),&lt;br /&gt;
						lang:makeCategoryLink())&lt;br /&gt;
			end&lt;br /&gt;
		end,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:[%l-]+:Dialects$&amp;quot;,&lt;br /&gt;
		process = function(title, cats)&lt;br /&gt;
			local content = title:getContent()&lt;br /&gt;
			local has_aliases = content:find(&amp;quot;aliases&amp;quot;) ~= nil&lt;br /&gt;
			return mw.getCurrentFrame():expandTemplate {&lt;br /&gt;
				title = &amp;quot;dialectal data module&amp;quot;,&lt;br /&gt;
				args = { [&amp;quot;labels-aliases&amp;quot;] = has_aliases },&lt;br /&gt;
			}&lt;br /&gt;
		end,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^.+%-translit$&amp;quot;,&lt;br /&gt;
		process = &amp;quot;translit&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:category tree/poscatboiler/data/lang%-specific/(.+)$&amp;quot;,&lt;br /&gt;
		process = function(title, cats, lang_code)&lt;br /&gt;
			local lang = lang_cache[lang_code]&lt;br /&gt;
			if lang then&lt;br /&gt;
				local langname = lang:getCanonicalName()&lt;br /&gt;
				cats:insert(&amp;quot;Category tree data modules/poscatboiler|&amp;quot; .. langname)&lt;br /&gt;
				cats:insert(langname .. &amp;quot; modules&amp;quot;)&lt;br /&gt;
				cats:insert(langname .. &amp;quot; data modules&amp;quot;)&lt;br /&gt;
				return &amp;quot;This module handles generating the descriptions and categorization for &amp;quot; .. langname .. &amp;quot; category pages &amp;quot;&lt;br /&gt;
					.. &amp;quot;of the format \&amp;quot;&amp;quot; .. langname .. &amp;quot; LABEL\&amp;quot; where LABEL can be any text. Examples are &amp;quot;&lt;br /&gt;
					.. &amp;quot;[[:Category:Bulgarian conjugation 2.1 verbs]] and [[:Category:Russian velar-stem neuter-form nouns]]. &amp;quot;&lt;br /&gt;
					.. &amp;quot;This module is part of the poscatboiler system, which is a general framework for generating the &amp;quot;&lt;br /&gt;
					.. &amp;quot;descriptions and categorization of category pages.\n\n&amp;quot;&lt;br /&gt;
					.. &amp;quot;For more information, see [[Module:category tree/poscatboiler/data/lang-specific/documentation]].&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:category tree/poscatboiler/data/(.+)$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Category tree data modules/poscatboiler|%1&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:ja/data/(.+)$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Japanese data modules|%1&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:Swadesh/data/(.+)$&amp;quot;,&lt;br /&gt;
		cat = &amp;quot;Swadesh modules|%1&amp;quot;,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:typing%-aids&amp;quot;,&lt;br /&gt;
		process = function(title, cats)&lt;br /&gt;
			local data_suffix = title.fullText:match(&amp;quot;^Module:typing%-aids/data/(.+)$&amp;quot;)&lt;br /&gt;
			if data_suffix then&lt;br /&gt;
				cats:insert(&amp;quot;Data modules&amp;quot;)&lt;br /&gt;
				if data_suffix:find &amp;quot;^[%l-]+$&amp;quot; then&lt;br /&gt;
					local lang = require &amp;quot;Module:languages&amp;quot;.getByCode(data_suffix)&lt;br /&gt;
					if lang then&lt;br /&gt;
						cats:insert(lang:getCanonicalName() .. &amp;quot; modules&amp;quot;)&lt;br /&gt;
					end&lt;br /&gt;
				elseif data_suffix:find &amp;quot;^%u%l%l%l$&amp;quot; then&lt;br /&gt;
					local script = require &amp;quot;Module:scripts&amp;quot;.getByCode(data_suffix)&lt;br /&gt;
					if script then&lt;br /&gt;
						cats:insert(script:getCategoryName())&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end,&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		regex = &amp;quot;^Module:R:([a-z%-]+):(.+)$&amp;quot;,&lt;br /&gt;
		process = function(title, cats, lang_code, refname)&lt;br /&gt;
			local lang = lang_cache[lang_code]&lt;br /&gt;
			if lang then&lt;br /&gt;
				cats:insert(lang:getCanonicalName() .. &amp;quot; modules|&amp;quot; .. refname)&lt;br /&gt;
				cats:insert((&amp;quot;Reference modules|%s&amp;quot;):format(lang:getCanonicalName()))&lt;br /&gt;
				return mw.getCurrentFrame():preprocess(&amp;quot;This module implements the reference template {{temp|R:&amp;quot; ..&lt;br /&gt;
					lang_code .. &amp;quot;:&amp;quot; .. refname .. &amp;quot;}}.&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function export.show(frame)&lt;br /&gt;
	local params = {&lt;br /&gt;
		[&amp;quot;hr&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;for&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;from&amp;quot;] = {},&lt;br /&gt;
		[&amp;quot;notsubpage&amp;quot;] = { type = &amp;quot;boolean&amp;quot;, default = false },&lt;br /&gt;
		[&amp;quot;nodoc&amp;quot;] = { type = &amp;quot;boolean&amp;quot;, default = false },&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local args = require(&amp;quot;Module:parameters&amp;quot;).process(frame.args, params)&lt;br /&gt;
	&lt;br /&gt;
	local output = Array(&amp;#039;\n&amp;lt;div class=&amp;quot;documentation&amp;quot; style=&amp;quot;display:block; clear:both&amp;quot;&amp;gt;\n&amp;#039;)&lt;br /&gt;
	local cats = Array()&lt;br /&gt;
	&lt;br /&gt;
	local nodoc = args.nodoc&lt;br /&gt;
	&lt;br /&gt;
	if (not args.hr) or (args.hr == &amp;quot;above&amp;quot;) then&lt;br /&gt;
		output:insert(&amp;quot;----\n&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local title = ((args[&amp;#039;for&amp;#039;] ~= &amp;quot;&amp;quot;) and args[&amp;#039;for&amp;#039;]) and mw.title.new(args[&amp;#039;for&amp;#039;])&lt;br /&gt;
		or mw.title.getCurrentTitle()&lt;br /&gt;
	local doc_title = mw.title.new((args[&amp;#039;from&amp;#039;] ~= &amp;quot;&amp;quot;) and args[&amp;#039;from&amp;#039;]&lt;br /&gt;
		or (title.fullText .. &amp;#039;/documentation&amp;#039;))&lt;br /&gt;
	local contentModel = title.contentModel&lt;br /&gt;
	&lt;br /&gt;
	local pagetype = mw.getContentLanguage():lcfirst(title.nsText) .. &amp;quot; page&amp;quot;&lt;br /&gt;
	local preload, fallback_docs, doc_content, doc_content_module,&lt;br /&gt;
		old_doc_title, user_name, skin_name, needs_doc&lt;br /&gt;
	&lt;br /&gt;
	if contentModel == &amp;quot;javascript&amp;quot; then&lt;br /&gt;
		pagetype = &amp;quot;script&amp;quot;&lt;br /&gt;
		if title.nsText == &amp;#039;MediaWiki&amp;#039; then&lt;br /&gt;
			if title.text:find(&amp;#039;Gadget-&amp;#039;) then&lt;br /&gt;
				preload = &amp;#039;Template:documentation/preloadGadget&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				preload = &amp;#039;Template:documentation/preloadMediaWikiJavaScript&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			preload  = &amp;#039;Template:documentation/preloadTemplate&amp;#039; -- XXX&lt;br /&gt;
		end&lt;br /&gt;
		if title.nsText == &amp;#039;User&amp;#039; then&lt;br /&gt;
			user_name = title.rootText&lt;br /&gt;
		end&lt;br /&gt;
	elseif contentModel == &amp;quot;css&amp;quot; then&lt;br /&gt;
		pagetype = &amp;quot;style sheet&amp;quot;&lt;br /&gt;
		preload  = &amp;#039;Template:documentation/preloadTemplate&amp;#039; -- XXX&lt;br /&gt;
		if title.nsText == &amp;#039;User&amp;#039; then&lt;br /&gt;
			user_name = title.rootText&lt;br /&gt;
		end&lt;br /&gt;
	elseif contentModel == &amp;quot;Scribunto&amp;quot; then&lt;br /&gt;
		pagetype = &amp;quot;module&amp;quot;&lt;br /&gt;
		user_name = title.rootText:match(&amp;quot;^[Uu]ser:(.+)&amp;quot;)&lt;br /&gt;
		if user_name then&lt;br /&gt;
			preload  = &amp;#039;Template:documentation/preloadModuleSandbox&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			preload  = &amp;#039;Template:documentation/preloadModule&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	elseif title.nsText == &amp;quot;Template&amp;quot; then&lt;br /&gt;
		pagetype = &amp;quot;template&amp;quot;&lt;br /&gt;
		preload  = &amp;#039;Template:documentation/preloadTemplate&amp;#039;&lt;br /&gt;
	elseif title.nsText == &amp;quot;Wiktionary&amp;quot; then&lt;br /&gt;
		pagetype = &amp;quot;project page&amp;quot;&lt;br /&gt;
		preload  = &amp;#039;Template:documentation/preloadTemplate&amp;#039; -- XXX&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if doc_title.isRedirect then&lt;br /&gt;
		old_doc_title = doc_title&lt;br /&gt;
		doc_title = mw.title.new(string.match(doc_title:getContent(),&lt;br /&gt;
			&amp;quot;^#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]]-)%]%]&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	output:insert(&amp;quot;&amp;lt;dl class=\&amp;quot;plainlinks\&amp;quot; style=\&amp;quot;font-size: smaller;\&amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
	if doc_title.exists then&lt;br /&gt;
		output:insert(&lt;br /&gt;
			&amp;quot;&amp;lt;dd&amp;gt;&amp;lt;i style=\&amp;quot;font-size: larger;\&amp;quot;&amp;gt;The following &amp;quot; ..&lt;br /&gt;
			&amp;quot;[[Help:Documenting templates and modules|documentation]] is located at [[&amp;quot; ..&lt;br /&gt;
			doc_title.fullText .. &amp;quot;]]. &amp;quot; ..&lt;br /&gt;
			&amp;quot;&amp;lt;sup&amp;gt;[[&amp;quot; .. doc_title:fullUrl { action = &amp;#039;edit&amp;#039; } .. &amp;quot; edit]]&amp;lt;/sup&amp;gt; &amp;lt;/i&amp;gt;&amp;lt;/dd&amp;gt;&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		if contentModel == &amp;quot;Scribunto&amp;quot; then&lt;br /&gt;
			local automatic_cats = nil&lt;br /&gt;
			if user_name then&lt;br /&gt;
				fallback_docs = &amp;quot;documentation/fallback/user module&amp;quot;&lt;br /&gt;
				automatic_cats = {&amp;quot;User sandbox modules&amp;quot;}&lt;br /&gt;
			else&lt;br /&gt;
				for _, data in ipairs(module_regex) do&lt;br /&gt;
			        local captures = {mw.ustring.match(title.fullText, data.regex)}&lt;br /&gt;
			        if #captures &amp;gt; 0 then&lt;br /&gt;
						local cat&lt;br /&gt;
						local process_function&lt;br /&gt;
						if type(data.process) == &amp;quot;function&amp;quot; then&lt;br /&gt;
							process_function = data.process&lt;br /&gt;
						elseif type(data.process) == &amp;quot;string&amp;quot; then&lt;br /&gt;
							doc_content_module = &amp;quot;Module:documentation/functions/&amp;quot; .. data.process&lt;br /&gt;
							process_function = require(doc_content_module)&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						if process_function then&lt;br /&gt;
							doc_content = process_function(title, cats, unpack(captures))&lt;br /&gt;
						end&lt;br /&gt;
						cat = data.cat&lt;br /&gt;
						&lt;br /&gt;
						if cat then&lt;br /&gt;
							if type(cat) == &amp;quot;string&amp;quot; then&lt;br /&gt;
								cat = {cat}&lt;br /&gt;
							end&lt;br /&gt;
							for _, c in ipairs(cat) do&lt;br /&gt;
								-- gsub() and Lua :gsub() return two arguments, which causes all sorts of problems.&lt;br /&gt;
								-- Terrible design, there should have been a separate two-argument function.&lt;br /&gt;
								local gsub_sucks = mw.ustring.gsub(title.fullText, data.regex, c)&lt;br /&gt;
								table.insert(cats, gsub_sucks)&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if not automatic_cats then&lt;br /&gt;
				local success, auto_cats =&lt;br /&gt;
					pcall(require(&amp;quot;Module:module categorization&amp;quot;).categorize, frame, true)&lt;br /&gt;
				if success then&lt;br /&gt;
					for _, category in ipairs(auto_cats) do&lt;br /&gt;
						cats:insert(category)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if title.subpageText == &amp;quot;templates&amp;quot; then&lt;br /&gt;
				cats:insert(&amp;quot;Template interface modules&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if automatic_cats then&lt;br /&gt;
				for _, c in ipairs(automatic_cats) do&lt;br /&gt;
					cats:insert(c)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			-- meaning module is not in user’s sandbox or one of many datamodule boring series&lt;br /&gt;
			needs_doc = not (automatic_cats or doc_content or fallback_docs)&lt;br /&gt;
		elseif title.nsText == &amp;quot;Template&amp;quot; then&lt;br /&gt;
			--cats:insert(&amp;quot;Uncategorized templates&amp;quot;)&lt;br /&gt;
			needs_doc = not (fallback_docs or nodoc)&lt;br /&gt;
		elseif (contentModel == &amp;quot;css&amp;quot;) or (contentModel == &amp;quot;javascript&amp;quot;) then&lt;br /&gt;
			if user_name then&lt;br /&gt;
				skin_name = skins[title.text:sub(#title.rootText + 1):match(&amp;quot;^/([a-z]+)%.[jc]ss?$&amp;quot;)]&lt;br /&gt;
				if skin_name then&lt;br /&gt;
					fallback_docs = &amp;#039;documentation/fallback/user &amp;#039; .. contentModel&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if doc_content then&lt;br /&gt;
			output:insert(&lt;br /&gt;
				&amp;quot;&amp;lt;dd&amp;gt;&amp;lt;i style=\&amp;quot;font-size: larger;\&amp;quot;&amp;gt;The following &amp;quot; ..&lt;br /&gt;
				&amp;quot;[[Help:Documenting templates and modules|documentation]] is &amp;quot; ..&lt;br /&gt;
				&amp;quot;generated by [[&amp;quot; .. (doc_content_module or &amp;quot;Module:documentation&amp;quot;) .. &amp;quot;]]. &amp;lt;sup&amp;gt;[[&amp;quot; ..&lt;br /&gt;
				mw.title.new(&amp;quot;Module:documentation&amp;quot;):fullUrl { action = &amp;#039;edit&amp;#039; } ..&lt;br /&gt;
				&amp;quot; edit]]&amp;lt;/sup&amp;gt; &amp;lt;/i&amp;gt;&amp;lt;/dd&amp;gt;&amp;quot;)&lt;br /&gt;
		elseif not nodoc then&lt;br /&gt;
			output:insert(&lt;br /&gt;
				&amp;quot;&amp;lt;dd&amp;gt;&amp;lt;i style=\&amp;quot;font-size: larger;\&amp;quot;&amp;gt;This &amp;quot; .. pagetype ..&lt;br /&gt;
				&amp;quot; lacks a [[Help:Documenting templates and modules|documentation subpage]]. &amp;quot; ..&lt;br /&gt;
				(fallback_docs and &amp;quot;You may &amp;quot; or &amp;quot;Please &amp;quot;) ..&lt;br /&gt;
				&amp;quot;[&amp;quot; .. doc_title:fullUrl { action = &amp;#039;edit&amp;#039;, preload = preload }&lt;br /&gt;
				.. &amp;quot; create it].&amp;lt;/i&amp;gt;&amp;lt;/dd&amp;gt;\n&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if title.fullText:match(&amp;quot;^MediaWiki:Gadget%-&amp;quot;) then&lt;br /&gt;
		local is_gadget = false&lt;br /&gt;
		local gadget_list = mw.title.new(&amp;quot;MediaWiki:Gadgets-definition&amp;quot;):getContent()&lt;br /&gt;
		&lt;br /&gt;
		for line in mw.text.gsplit(gadget_list, &amp;quot;\n&amp;quot;) do&lt;br /&gt;
			local gadget, opts, items = line:match(&amp;quot;^%*%s*([A-Za-z][A-Za-z0-9_%-]*)%[(.-)%]|(.+)$&amp;quot;) -- opts is unused&lt;br /&gt;
			if not gadget then&lt;br /&gt;
				gadget, items = line:match(&amp;quot;^%*%s*([A-Za-z][A-Za-z0-9_%-]*)|(.+)$&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if gadget then&lt;br /&gt;
				items = Array(mw.text.split(items, &amp;quot;|&amp;quot;))&lt;br /&gt;
				for i, item in ipairs(items) do&lt;br /&gt;
					if title.fullText == (&amp;quot;MediaWiki:Gadget-&amp;quot; .. item) then&lt;br /&gt;
						is_gadget = true&lt;br /&gt;
&lt;br /&gt;
						output:insert(&amp;quot;&amp;lt;dd&amp;gt; &amp;#039;&amp;#039;This script is a part of the &amp;lt;code&amp;gt;&amp;quot;)&lt;br /&gt;
						output:insert(gadget)&lt;br /&gt;
						output:insert(&amp;quot;&amp;lt;/code&amp;gt; gadget ([&amp;quot;)&lt;br /&gt;
						output:insert(tostring(mw.uri.fullUrl(&amp;#039;MediaWiki:Gadgets-definition&amp;#039;, &amp;#039;action=edit&amp;#039;)))&lt;br /&gt;
						output:insert(&amp;quot; edit definitions])&amp;#039;&amp;#039; &amp;lt;dl&amp;gt;&amp;quot;)&lt;br /&gt;
						&lt;br /&gt;
						output:insert(&amp;quot;&amp;lt;dd&amp;gt; &amp;#039;&amp;#039;Description ([&amp;quot;)&lt;br /&gt;
						output:insert(tostring(mw.uri.fullUrl(&amp;#039;MediaWiki:Gadget-&amp;#039; .. gadget, &amp;#039;action=edit&amp;#039;)))&lt;br /&gt;
						output:insert(&amp;quot; edit])&amp;#039;&amp;#039;: &amp;quot;)&lt;br /&gt;
						&lt;br /&gt;
						local gadget_description = mw.message.new(&amp;#039;Gadget-&amp;#039; .. gadget):plain()&lt;br /&gt;
						gadget_description = frame:preprocess(gadget_description)&lt;br /&gt;
						output:insert(gadget_description)&lt;br /&gt;
						output:insert(&amp;quot; &amp;lt;/dd&amp;gt;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
						items:remove(i)&lt;br /&gt;
						if #items &amp;gt; 0 then&lt;br /&gt;
							for j, item in ipairs(items) do&lt;br /&gt;
								items[j] = &amp;#039;[[MediaWiki:Gadget-&amp;#039; .. item .. &amp;#039;|&amp;#039; .. item .. &amp;#039;]]&amp;#039;&lt;br /&gt;
							end&lt;br /&gt;
							output:insert(&amp;quot;&amp;lt;dd&amp;gt; &amp;#039;&amp;#039;Other parts&amp;#039;&amp;#039;: &amp;quot;)&lt;br /&gt;
							output:insert(mw.text.listToText(items))&lt;br /&gt;
							output:insert(&amp;quot;&amp;lt;/dd&amp;gt;&amp;quot;)&lt;br /&gt;
						end&lt;br /&gt;
&lt;br /&gt;
						output:insert(&amp;quot;&amp;lt;/dl&amp;gt;&amp;lt;/dd&amp;gt;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if not is_gadget then&lt;br /&gt;
			output:insert(&amp;quot;&amp;lt;dd&amp;gt; &amp;#039;&amp;#039;This script is not a part of any [&amp;quot;)&lt;br /&gt;
			output:insert(tostring(mw.uri.fullUrl(&amp;#039;Special:Gadgets&amp;#039;, &amp;#039;uselang=en&amp;#039;)))&lt;br /&gt;
			output:insert(&amp;#039; gadget] ([&amp;#039;)&lt;br /&gt;
			output:insert(tostring(mw.uri.fullUrl(&amp;#039;MediaWiki:Gadgets-definition&amp;#039;, &amp;#039;action=edit&amp;#039;)))&lt;br /&gt;
			output:insert(&amp;#039; edit definitions]).&amp;lt;/dd&amp;gt;&amp;#039;)&lt;br /&gt;
		-- else&lt;br /&gt;
			-- cats:insert(&amp;quot;Wiktionary gadgets&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if old_doc_title then&lt;br /&gt;
		output:insert(&amp;quot;&amp;lt;dd&amp;gt; &amp;#039;&amp;#039;Redirected from&amp;#039;&amp;#039; [&amp;quot;)&lt;br /&gt;
		output:insert(old_doc_title:fullUrl { redirect = &amp;#039;no&amp;#039; })&lt;br /&gt;
		output:insert(&amp;quot; &amp;quot;)&lt;br /&gt;
		output:insert(old_doc_title.fullText)&lt;br /&gt;
		output:insert(&amp;quot;] ([&amp;quot;)&lt;br /&gt;
		output:insert(old_doc_title:fullUrl { action = &amp;#039;edit&amp;#039; })&lt;br /&gt;
		output:insert(&amp;quot; edit]).&amp;lt;/dd&amp;gt;\n&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local links = Array()&lt;br /&gt;
	&lt;br /&gt;
	if title.isSubpage and not args.notsubpage then&lt;br /&gt;
		links:insert(&amp;quot;[[:&amp;quot; .. title.nsText .. &amp;quot;:&amp;quot; .. title.rootText .. &amp;quot;|root page]]&amp;quot;)&lt;br /&gt;
		links:insert(&amp;quot;[[Special:PrefixIndex/&amp;quot; .. title.nsText .. &amp;quot;:&amp;quot; .. title.rootText .. &amp;quot;/|root page’s subpages]]&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		links:insert(&amp;quot;[[Special:PrefixIndex/&amp;quot; .. title.fullText .. &amp;quot;/|subpage list]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	links:insert(&lt;br /&gt;
		&amp;#039;[&amp;#039; .. tostring(mw.uri.fullUrl(&amp;#039;Special:WhatLinksHere/&amp;#039; .. title.fullText,&lt;br /&gt;
			&amp;#039;hidetrans=1&amp;amp;hideredirs=1&amp;#039;)) .. &amp;#039; links]&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if contentModel ~= &amp;quot;Scribunto&amp;quot; then&lt;br /&gt;
		links:insert(&lt;br /&gt;
			&amp;#039;[&amp;#039; .. tostring(mw.uri.fullUrl(&amp;#039;Special:WhatLinksHere/&amp;#039; .. title.fullText,&lt;br /&gt;
			&amp;#039;hidelinks=1&amp;amp;hidetrans=1&amp;#039;)) .. &amp;#039; redirects]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (contentModel == &amp;quot;javascript&amp;quot;) or (contentModel == &amp;quot;css&amp;quot;) then&lt;br /&gt;
		if user_name then&lt;br /&gt;
			links:insert(&amp;quot;[[Special:MyPage&amp;quot; .. title.text:sub(#title.rootText + 1) .. &amp;quot;|your own]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		links:insert(&lt;br /&gt;
			&amp;#039;[&amp;#039; .. tostring(mw.uri.fullUrl(&amp;#039;Special:WhatLinksHere/&amp;#039; .. title.fullText,&lt;br /&gt;
				&amp;#039;hidelinks=1&amp;amp;hideredirs=1&amp;#039;)) .. &amp;#039; transclusions]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if contentModel == &amp;quot;Scribunto&amp;quot; then&lt;br /&gt;
		local is_testcases = title.isSubpage and title.subpageText == &amp;quot;testcases&amp;quot;&lt;br /&gt;
		local without_subpage = title.nsText .. &amp;quot;:&amp;quot; .. title.baseText&lt;br /&gt;
		if is_testcases then&lt;br /&gt;
			links:insert(&amp;quot;[[:&amp;quot; .. without_subpage .. &amp;quot;|tested module]]&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			links:insert(&amp;quot;[[&amp;quot; .. title.fullText .. &amp;quot;/testcases|testcases]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if user_name then&lt;br /&gt;
			links:insert(&amp;quot;[[User:&amp;quot; .. user_name .. &amp;quot;|user page]]&amp;quot;)&lt;br /&gt;
			links:insert(&amp;quot;[[User talk:&amp;quot; .. user_name .. &amp;quot;|user talk page]]&amp;quot;)&lt;br /&gt;
			links:insert(&amp;quot;[[Special:PrefixIndex/User:&amp;quot; .. user_name .. &amp;quot;/|userspace]]&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			-- If sandbox module, add a link to the module that this is a sandbox of.&lt;br /&gt;
			-- Exclude user sandbox modules like [[User:Dine2016/sandbox]].&lt;br /&gt;
			if title.text:find(&amp;quot;/sandbox%d*%f[/%z]&amp;quot;) then&lt;br /&gt;
				cats:insert(&amp;quot;Sandbox modules&amp;quot;)&lt;br /&gt;
				&lt;br /&gt;
				-- Sandbox modules don’t really need documentation.&lt;br /&gt;
				needs_doc = false&lt;br /&gt;
				&lt;br /&gt;
				-- Will behave badly if “/sandbox” occurs twice in title!&lt;br /&gt;
				local sandbox_of = title.fullText:gsub(&amp;quot;/sandbox%d*%f[/%z]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
				&lt;br /&gt;
				local diff&lt;br /&gt;
				if page_exists(sandbox_of) then&lt;br /&gt;
					diff = &amp;quot; (&amp;quot; .. compare_pages(title.fullText, sandbox_of, &amp;quot;diff&amp;quot;) .. &amp;quot;)&amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;documentation/no sandbox of&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				links:insert(&amp;quot;[[:&amp;quot; .. sandbox_of .. &amp;quot;|sandbox of]]&amp;quot; .. (diff or &amp;quot;&amp;quot;))&lt;br /&gt;
			&lt;br /&gt;
			-- If not a sandbox module, add link to sandbox module.&lt;br /&gt;
			-- Sometimes there are multiple sandboxes for a single module:&lt;br /&gt;
			-- [[Module:sa-pronunc/sandbox]],  [[Module:sa-pronunc/sandbox2]].&lt;br /&gt;
			-- Occasionally sandbox modules have their own subpages that are also&lt;br /&gt;
			-- sandboxes: [[Module:grc-decl/sandbox/decl]].&lt;br /&gt;
			else&lt;br /&gt;
				local sandbox_title&lt;br /&gt;
				if title.fullText:find(&amp;quot;^Module:grc%-decl/&amp;quot;) then&lt;br /&gt;
					sandbox_title = title.fullText:gsub(&amp;quot;^Module:grc%-decl/&amp;quot;, &amp;quot;Module:grc-decl/sandbox/&amp;quot;)&lt;br /&gt;
				elseif is_testcases then&lt;br /&gt;
					sandbox_title = title.fullText:gsub(&amp;quot;/testcases&amp;quot;, &amp;quot;/sandbox/testcases&amp;quot;)&lt;br /&gt;
				else&lt;br /&gt;
					sandbox_title = title.fullText .. &amp;quot;/sandbox&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
				local sandbox_link = &amp;quot;[[:&amp;quot; .. sandbox_title .. &amp;quot;|sandbox]]&amp;quot;&lt;br /&gt;
				&lt;br /&gt;
				local diff&lt;br /&gt;
				if page_exists(sandbox_title) then&lt;br /&gt;
					diff = &amp;quot; (&amp;quot; .. compare_pages(title.fullText, sandbox_title, &amp;quot;diff&amp;quot;) .. &amp;quot;)&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				links:insert(sandbox_link .. (diff or &amp;quot;&amp;quot;))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if title.nsText == &amp;quot;Template&amp;quot; then&lt;br /&gt;
		-- Error search: all(any namespace), hastemplate (show pages using the template), insource (show source code), incategory (any/specific error) -- [[mw:Help:CirrusSearch]], [[w:Help:Searching/Regex]]&lt;br /&gt;
		-- apparently same with/without: &amp;amp;profile=advanced&amp;amp;fulltext=1&lt;br /&gt;
		local errorq = &amp;#039;searchengineselect=mediawiki&amp;amp;search=all: hastemplate:\&amp;quot;&amp;#039;..title.rootText..&amp;#039;\&amp;quot; insource:\&amp;quot;&amp;#039;..title.rootText..&amp;#039;\&amp;quot; incategory:&amp;#039;&lt;br /&gt;
		local eincategory = &amp;quot;Pages_with_module_errors|ParserFunction_errors|DisplayTitle_errors|Pages_with_ISBN_errors|Pages_with_ISSN_errors|Pages_with_reference_errors|Pages_with_syntax_highlighting_errors|Pages_with_TemplateStyles_errors&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		links:insert(&lt;br /&gt;
			&amp;#039;[&amp;#039; .. tostring(mw.uri.fullUrl(&amp;#039;Special:Search&amp;#039;, errorq..eincategory )) .. &amp;#039; errors]&amp;#039;&lt;br /&gt;
			.. &amp;#039; (&amp;#039; ..&lt;br /&gt;
			&amp;#039;[&amp;#039; .. tostring(mw.uri.fullUrl(&amp;#039;Special:Search&amp;#039;, errorq..&amp;#039;ParserFunction_errors&amp;#039; )) .. &amp;#039; parser]&amp;#039;&lt;br /&gt;
			.. &amp;#039;/&amp;#039; ..&lt;br /&gt;
			&amp;#039;[&amp;#039; .. tostring(mw.uri.fullUrl(&amp;#039;Special:Search&amp;#039;, errorq..&amp;#039;Pages_with_module_errors&amp;#039; )) .. &amp;#039; module]&amp;#039;&lt;br /&gt;
			.. &amp;#039;)&amp;#039;&lt;br /&gt;
		)&lt;br /&gt;
		&lt;br /&gt;
		if title.isSubpage and title.text:find(&amp;quot;/sandbox%d*%f[/%z]&amp;quot;) then -- This is a sandbox template.&lt;br /&gt;
			-- At the moment there are no user sandbox templates with subpage&lt;br /&gt;
			-- “/sandbox”.&lt;br /&gt;
			cats:insert(&amp;quot;Sandbox templates&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			-- Sandbox templates don’t really need documentation.&lt;br /&gt;
			needs_doc = false&lt;br /&gt;
			&lt;br /&gt;
			-- Will behave badly if “/sandbox” occurs twice in title!&lt;br /&gt;
			local sandbox_of = title.fullText:gsub(&amp;quot;/sandbox%d*%f[/%z]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			local diff&lt;br /&gt;
			if page_exists(sandbox_of) then&lt;br /&gt;
				diff = &amp;quot; (&amp;quot; .. compare_pages(title.fullText, sandbox_of, &amp;quot;diff&amp;quot;) .. &amp;quot;)&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;documentation/no sandbox of&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			links:insert(&amp;quot;[[:&amp;quot; .. sandbox_of .. &amp;quot;|sandbox of]]&amp;quot; .. (diff or &amp;quot;&amp;quot;))&lt;br /&gt;
		else -- This is a template that can have a sandbox.&lt;br /&gt;
			local sandbox_title = title.fullText .. &amp;quot;/sandbox&amp;quot;&lt;br /&gt;
			&lt;br /&gt;
			local diff&lt;br /&gt;
			if page_exists(sandbox_title) then&lt;br /&gt;
				diff = &amp;quot; (&amp;quot; .. compare_pages(title.fullText, sandbox_title, &amp;quot;diff&amp;quot;) .. &amp;quot;)&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			links:insert(&amp;quot;[[:&amp;quot; .. sandbox_title .. &amp;quot;|sandbox]]&amp;quot; .. (diff or &amp;quot;&amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #links &amp;gt; 0 then&lt;br /&gt;
		output:insert(&amp;quot;&amp;lt;dd&amp;gt; &amp;#039;&amp;#039;Useful links&amp;#039;&amp;#039;: &amp;quot; .. links:concat(&amp;quot; • &amp;quot;) .. &amp;quot;&amp;lt;/dd&amp;gt;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	output:insert(&amp;quot;&amp;lt;/dl&amp;gt;\n&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- Show error from [[Module:category tree/topic cat/data]] on its submodules&amp;#039;&lt;br /&gt;
	-- documentation to, for instance, warn about duplicate labels.&lt;br /&gt;
	if title.fullText:find(&amp;quot;Module:category tree/topic cat/data&amp;quot;, 1, true) == 1 then&lt;br /&gt;
		local ok, err = pcall(require, &amp;quot;Module:category tree/topic cat/data&amp;quot;)&lt;br /&gt;
		if not ok then&lt;br /&gt;
			output:insert(&amp;#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;&amp;#039; .. err .. &amp;#039;&amp;lt;/span&amp;gt;\n\n&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if doc_title.exists then&lt;br /&gt;
		-- Override automatic documentation, if present.&lt;br /&gt;
		doc_content = frame:expandTemplate { title = doc_title.fullText }&lt;br /&gt;
	elseif not doc_content and fallback_docs then&lt;br /&gt;
		doc_content = frame:expandTemplate {&lt;br /&gt;
			title = fallback_docs;&lt;br /&gt;
			args = {&lt;br /&gt;
				[&amp;#039;user&amp;#039;] = user_name;&lt;br /&gt;
				[&amp;#039;page&amp;#039;] = title.fullText;&lt;br /&gt;
				[&amp;#039;skin name&amp;#039;] = skin_name;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if doc_content then&lt;br /&gt;
		output:insert(doc_content)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	output:insert((&amp;#039;\n&amp;lt;%s style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&amp;#039;):format(args.hr == &amp;quot;below&amp;quot; and &amp;quot;hr&amp;quot; or &amp;quot;br&amp;quot;))&lt;br /&gt;
	&lt;br /&gt;
	if not cats[1] and not doc_content then&lt;br /&gt;
		if contentModel == &amp;quot;Scribunto&amp;quot; then&lt;br /&gt;
			cats:insert(&amp;quot;Uncategorized modules&amp;quot;)&lt;br /&gt;
		-- elseif title.nsText == &amp;quot;Template&amp;quot; then&lt;br /&gt;
			-- cats:insert(&amp;quot;Uncategorized templates&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if needs_doc then&lt;br /&gt;
		cats:insert(&amp;quot;Templates and modules needing documentation&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for _, cat in ipairs(cats) do&lt;br /&gt;
		output:insert(&amp;quot;[[Category:&amp;quot; .. cat .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	output:insert(&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	return output:concat()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Used by {{translit module documentation}}.&lt;br /&gt;
function export.translitModuleLangList(frame)&lt;br /&gt;
	local pagename, subpage&lt;br /&gt;
	&lt;br /&gt;
	if frame.args[1] then&lt;br /&gt;
		pagename = frame.args[1]&lt;br /&gt;
	else&lt;br /&gt;
		local title = mw.title.getCurrentTitle()&lt;br /&gt;
		subpage = title.subpageText&lt;br /&gt;
		pagename = title.text&lt;br /&gt;
		&lt;br /&gt;
		if subpage ~= pagename then&lt;br /&gt;
			pagename = title.rootText&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local translitModule = pagename&lt;br /&gt;
	&lt;br /&gt;
	local languageObjects = require(&amp;quot;Module:languages/byTranslitModule&amp;quot;)(translitModule)&lt;br /&gt;
	local codeInPagename = pagename:match(&amp;quot;^([%l-]+)%-.*translit$&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local categories = Array()&lt;br /&gt;
	local codeInPagenameInList = false&lt;br /&gt;
	if codeInPagename then&lt;br /&gt;
		if languageObjects[1] and subpage ~= &amp;quot;documentation&amp;quot; then&lt;br /&gt;
			local agreement = languageObjects[2] and &amp;quot;s&amp;quot; or &amp;quot;&amp;quot;&lt;br /&gt;
			categories:insert(&amp;quot;[[Category:Transliteration modules used by &amp;quot; ..&lt;br /&gt;
				#languageObjects .. &amp;quot; language&amp;quot; .. agreement .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		languageObjects = Array(languageObjects)&lt;br /&gt;
			:filter(&lt;br /&gt;
				function (lang)&lt;br /&gt;
					local result = lang:getCode() ~= codeInPagename&lt;br /&gt;
					codeInPagenameInList = codeInPagenameInList or result&lt;br /&gt;
					return result&lt;br /&gt;
				end)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if subpage ~= &amp;quot;documentation&amp;quot; then&lt;br /&gt;
		for script_code in pagename:gmatch(&amp;quot;%f[^-%z]%u%l%l%l%f[-]&amp;quot;) do&lt;br /&gt;
			local script = require &amp;quot;Module:scripts&amp;quot;.getByCode(script_code)&lt;br /&gt;
			if script then&lt;br /&gt;
				categories:insert(&amp;quot;[[Category:&amp;quot; .. script:getCategoryName() .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if subpage ~= &amp;quot;documentation&amp;quot; and not page_exists(&amp;quot;Module:&amp;quot; .. pagename .. &amp;quot;/testcases&amp;quot;) then&lt;br /&gt;
		categories:insert(&amp;quot;[[Category:Transliteration modules without a testcases subpage]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not languageObjects[1] then&lt;br /&gt;
		return categories:concat()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local langs = Array(languageObjects)&lt;br /&gt;
		:sort(&lt;br /&gt;
			function(lang1, lang2)&lt;br /&gt;
				return lang1:getCode() &amp;lt; lang2:getCode()&lt;br /&gt;
			end)&lt;br /&gt;
		-- This will not error because languageObjects is not empty.&lt;br /&gt;
		:map(languageObjects[1].makeCategoryLink)&lt;br /&gt;
		:serial_comma_join()&lt;br /&gt;
	&lt;br /&gt;
	return &amp;quot;It is &amp;quot; .. ( codeInPagenameInList and &amp;quot;also&amp;quot; or &amp;quot;&amp;quot; ) ..&lt;br /&gt;
		&amp;quot; used to transliterate &amp;quot; .. langs .. &amp;quot;.&amp;quot; .. categories:concat()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>en&gt;Benwing2</name></author>
	</entry>
</feed>