<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.fyralabs.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Alyxia</id>
	<title>Fyra Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.fyralabs.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Alyxia"/>
	<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/Special:Contributions/Alyxia"/>
	<updated>2026-05-14T09:19:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Main_Page&amp;diff=175</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Main_Page&amp;diff=175"/>
		<updated>2023-06-12T10:57:51Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Link to Fyra Labs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the [[Fyra Labs]] wiki.&lt;br /&gt;
&lt;br /&gt;
This wiki contains information and documentation about our various projects.&lt;br /&gt;
&amp;lt;!-- Just keeping for posterity. DO NOT ALTER.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=MediaWiki:Common.css&amp;diff=169</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=MediaWiki:Common.css&amp;diff=169"/>
		<updated>2023-06-10T10:43:55Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Lock Fira Code down to Citizen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Fira%20Code:wght@300&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
:root {&lt;br /&gt;
 --font-family-monospace: &#039;Fira Code&#039;,&#039;Courier New&#039;,monospace !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skin-citizen pre, code, tt, kbd, samp, .mw-code {&lt;br /&gt;
	font-family: var(--font-family-monospace) !important;&lt;br /&gt;
	font-size: 0.875rem;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=MediaWiki:Common.css&amp;diff=167</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=MediaWiki:Common.css&amp;diff=167"/>
		<updated>2023-06-10T10:19:10Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Globally set Fira Code as the default monospace font&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
:root {&lt;br /&gt;
 --font-family-monospace: &#039;Fira Code&#039;,&#039;Courier New&#039;,monospace !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pre, code, tt, kbd, samp, .mw-code {&lt;br /&gt;
	font-family: var(--font-family-monospace) !important;&lt;br /&gt;
	font-size: 0.875rem;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Plainlist/styles.css&amp;diff=144</id>
		<title>Template:Plainlist/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Plainlist/styles.css&amp;diff=144"/>
		<updated>2023-06-08T12:48:48Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the missing plainlist styles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp-template|small=yes}} */&lt;br /&gt;
.plainlist ol,&lt;br /&gt;
.plainlist ul {&lt;br /&gt;
	line-height: inherit;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0; /* Reset Minerva default */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.plainlist ol li,&lt;br /&gt;
.plainlist ul li {&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Hlist/styles.css&amp;diff=143</id>
		<title>Template:Hlist/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Hlist/styles.css&amp;diff=143"/>
		<updated>2023-06-08T11:39:19Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Rip the Hlist styles from Wikipedia&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp-protected|reason=match parent|small=yes}} */&lt;br /&gt;
/* &lt;br /&gt;
 * hlist styles are defined in core and Minerva and differ in Minerva. The&lt;br /&gt;
 * current definitions here (2023-01-01) are sufficient to override Minerva&lt;br /&gt;
 * without use of the hlist-separated class. The most problematic styles were&lt;br /&gt;
 * related to margin, padding, and the bullet. Check files listed at&lt;br /&gt;
 * [[MediaWiki talk:Common.css/to do#hlist-separated]]&lt;br /&gt;
 */&lt;br /&gt;
/*&lt;br /&gt;
 * TODO: When the majority of readership supports it (or some beautiful world&lt;br /&gt;
 * in which grade C support is above the minimum threshold), use :is()&lt;br /&gt;
 */&lt;br /&gt;
.hlist dl,&lt;br /&gt;
.hlist ol,&lt;br /&gt;
.hlist ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Display list items inline */&lt;br /&gt;
.hlist dd,&lt;br /&gt;
.hlist dt,&lt;br /&gt;
.hlist li {&lt;br /&gt;
	/*&lt;br /&gt;
	 * don&#039;t trust the note that says margin doesn&#039;t work with inline&lt;br /&gt;
	 * removing margin: 0 makes dds have margins again&lt;br /&gt;
	 * We also want to reset margin-right in Minerva&lt;br /&gt;
	 */&lt;br /&gt;
	margin: 0; &lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Display requested top-level lists inline */&lt;br /&gt;
.hlist.inline,&lt;br /&gt;
.hlist.inline dl,&lt;br /&gt;
.hlist.inline ol,&lt;br /&gt;
.hlist.inline ul,&lt;br /&gt;
/* Display nested lists inline */&lt;br /&gt;
.hlist dl dl,&lt;br /&gt;
.hlist dl ol,&lt;br /&gt;
.hlist dl ul,&lt;br /&gt;
.hlist ol dl,&lt;br /&gt;
.hlist ol ol,&lt;br /&gt;
.hlist ol ul,&lt;br /&gt;
.hlist ul dl,&lt;br /&gt;
.hlist ul ol,&lt;br /&gt;
.hlist ul ul {&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide empty list items */&lt;br /&gt;
.hlist .mw-empty-li {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TODO: :not() can maybe be used here to remove the later rule. naive test&lt;br /&gt;
 * seems to work. more testing needed. like so:&lt;br /&gt;
 *.hlist dt:not(:last-child)::after {&lt;br /&gt;
 *	content: &amp;quot;: &amp;quot;;&lt;br /&gt;
 *}&lt;br /&gt;
 *.hlist dd:not(:last-child)::after,&lt;br /&gt;
 *.hlist li:not(:last-child)::after {&lt;br /&gt;
 *	content: &amp;quot; · &amp;quot;;&lt;br /&gt;
 *	font-weight: bold;&lt;br /&gt;
 *}&lt;br /&gt;
 */&lt;br /&gt;
/* Generate interpuncts */&lt;br /&gt;
.hlist dt::after {&lt;br /&gt;
	content: &amp;quot;: &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist dd::after,&lt;br /&gt;
.hlist li::after {&lt;br /&gt;
	content: &amp;quot; · &amp;quot;;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist dd:last-child::after,&lt;br /&gt;
.hlist dt:last-child::after,&lt;br /&gt;
.hlist li:last-child::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Add parentheses around nested lists */&lt;br /&gt;
.hlist dd dd:first-child::before,&lt;br /&gt;
.hlist dd dt:first-child::before,&lt;br /&gt;
.hlist dd li:first-child::before,&lt;br /&gt;
.hlist dt dd:first-child::before,&lt;br /&gt;
.hlist dt dt:first-child::before,&lt;br /&gt;
.hlist dt li:first-child::before,&lt;br /&gt;
.hlist li dd:first-child::before,&lt;br /&gt;
.hlist li dt:first-child::before,&lt;br /&gt;
.hlist li li:first-child::before {&lt;br /&gt;
	content: &amp;quot; (&amp;quot;;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist dd dd:last-child::after,&lt;br /&gt;
.hlist dd dt:last-child::after,&lt;br /&gt;
.hlist dd li:last-child::after,&lt;br /&gt;
.hlist dt dd:last-child::after,&lt;br /&gt;
.hlist dt dt:last-child::after,&lt;br /&gt;
.hlist dt li:last-child::after,&lt;br /&gt;
.hlist li dd:last-child::after,&lt;br /&gt;
.hlist li dt:last-child::after,&lt;br /&gt;
.hlist li li:last-child::after {&lt;br /&gt;
	content: &amp;quot;)&amp;quot;;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Put ordinals in front of ordered list items */&lt;br /&gt;
.hlist ol {&lt;br /&gt;
	counter-reset: listitem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist ol &amp;gt; li {&lt;br /&gt;
	counter-increment: listitem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist ol &amp;gt; li::before {&lt;br /&gt;
	content: &amp;quot; &amp;quot; counter(listitem) &amp;quot;\a0&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.hlist dd ol &amp;gt; li:first-child::before,&lt;br /&gt;
.hlist dt ol &amp;gt; li:first-child::before,&lt;br /&gt;
.hlist li ol &amp;gt; li:first-child::before {&lt;br /&gt;
	content: &amp;quot; (&amp;quot; counter(listitem) &amp;quot;\a0&amp;quot;;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Module:Navbar&amp;diff=142</id>
		<title>Module:Navbar</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Module:Navbar&amp;diff=142"/>
		<updated>2023-06-08T11:38:36Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Woops, fix a typo in requiring the config module&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local cfg = mw.loadData(&#039;Module:Navbar/config&#039;)&lt;br /&gt;
&lt;br /&gt;
local function get_title_arg(is_collapsible, template)&lt;br /&gt;
	local title_arg = 1&lt;br /&gt;
	if is_collapsible then title_arg = 2 end&lt;br /&gt;
	if template then title_arg = &#039;template&#039; end&lt;br /&gt;
	return title_arg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function choose_links(template, args)&lt;br /&gt;
	-- The show table indicates the default displayed items.&lt;br /&gt;
	-- view, talk, edit, hist, move, watch&lt;br /&gt;
	-- TODO: Move to configuration.&lt;br /&gt;
	local show = {true, true, true, false, false, false}&lt;br /&gt;
	if template then&lt;br /&gt;
		show[2] = false&lt;br /&gt;
		show[3] = false&lt;br /&gt;
		local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,&lt;br /&gt;
			talk = 2, edit = 3, hist = 4, move = 5, watch = 6}&lt;br /&gt;
		-- TODO: Consider removing TableTools dependency.&lt;br /&gt;
		for _, v in ipairs(require (&#039;Module:TableTools&#039;).compressSparseArray(args)) do&lt;br /&gt;
			local num = index[v]&lt;br /&gt;
			if num then show[num] = true end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local remove_edit_link = args.noedit&lt;br /&gt;
	if remove_edit_link then show[3] = false end&lt;br /&gt;
	&lt;br /&gt;
	return show&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function add_link(link_description, ul, is_mini, font_style)&lt;br /&gt;
	local l&lt;br /&gt;
	if link_description.url then&lt;br /&gt;
		l = {&#039;[&#039;, &#039;&#039;, &#039;]&#039;}&lt;br /&gt;
	else&lt;br /&gt;
		l = {&#039;[[&#039;, &#039;|&#039;, &#039;]]&#039;}&lt;br /&gt;
	end&lt;br /&gt;
	ul:tag(&#039;li&#039;)&lt;br /&gt;
		:addClass(&#039;nv-&#039; .. link_description.full)&lt;br /&gt;
		:wikitext(l[1] .. link_description.link .. l[2])&lt;br /&gt;
		:tag(is_mini and &#039;abbr&#039; or &#039;span&#039;)&lt;br /&gt;
			:attr(&#039;title&#039;, link_description.html_title)&lt;br /&gt;
			:cssText(font_style)&lt;br /&gt;
			:wikitext(is_mini and link_description.mini or link_description.full)&lt;br /&gt;
			:done()&lt;br /&gt;
		:wikitext(l[3])&lt;br /&gt;
		:done()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)&lt;br /&gt;
	if not title then&lt;br /&gt;
		error(cfg.invalid_title .. title_text)&lt;br /&gt;
	end&lt;br /&gt;
	local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	-- TODO: Get link_descriptions and show into the configuration module.&lt;br /&gt;
	-- link_descriptions should be easier...&lt;br /&gt;
	local link_descriptions = {&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;v&#039;, [&#039;full&#039;] = &#039;view&#039;, [&#039;html_title&#039;] = &#039;View this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = title.fullText, [&#039;url&#039;] = false },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;t&#039;, [&#039;full&#039;] = &#039;talk&#039;, [&#039;html_title&#039;] = &#039;Discuss this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = talkpage, [&#039;url&#039;] = false },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;e&#039;, [&#039;full&#039;] = &#039;edit&#039;, [&#039;html_title&#039;] = &#039;Edit this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = title:fullUrl(&#039;action=edit&#039;), [&#039;url&#039;] = true },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;h&#039;, [&#039;full&#039;] = &#039;hist&#039;, [&#039;html_title&#039;] = &#039;History of this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = title:fullUrl(&#039;action=history&#039;), [&#039;url&#039;] = true },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;m&#039;, [&#039;full&#039;] = &#039;move&#039;, [&#039;html_title&#039;] = &#039;Move this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = mw.title.new(&#039;Special:Movepage&#039;):fullUrl(&#039;target=&#039;..title.fullText), [&#039;url&#039;] = true },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;w&#039;, [&#039;full&#039;] = &#039;watch&#039;, [&#039;html_title&#039;] = &#039;Watch this template&#039;, &lt;br /&gt;
			[&#039;link&#039;] = title:fullUrl(&#039;action=watch&#039;), [&#039;url&#039;] = true }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local ul = mw.html.create(&#039;ul&#039;)&lt;br /&gt;
	if has_brackets then&lt;br /&gt;
		ul:addClass(cfg.classes.brackets)&lt;br /&gt;
			:cssText(font_style)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, _ in ipairs(displayed_links) do&lt;br /&gt;
		if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end&lt;br /&gt;
	end&lt;br /&gt;
	return ul:done()&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._navbar(args)&lt;br /&gt;
	&lt;br /&gt;
	-- TODO: We probably don&#039;t need both fontstyle and fontcolor...&lt;br /&gt;
	local font_style = args.fontstyle&lt;br /&gt;
	local font_color = args.fontcolor&lt;br /&gt;
	local is_collapsible = args.collapsible&lt;br /&gt;
	local is_mini = args.mini&lt;br /&gt;
	local is_plain = args.plain&lt;br /&gt;
	&lt;br /&gt;
	local collapsible_class = nil&lt;br /&gt;
	if is_collapsible then&lt;br /&gt;
		collapsible_class = cfg.classes.collapsible&lt;br /&gt;
		if not is_plain then is_mini = 1 end&lt;br /&gt;
		if font_color then&lt;br /&gt;
			font_style = (font_style or &#039;&#039;) .. &#039;; color: &#039; .. font_color .. &#039;;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local navbar_style = args.style&lt;br /&gt;
	local div = mw.html.create():tag(&#039;div&#039;)&lt;br /&gt;
	div&lt;br /&gt;
		:addClass(cfg.classes.navbar)&lt;br /&gt;
		:addClass(cfg.classes.plainlinks)&lt;br /&gt;
		:addClass(cfg.classes.horizontal_list)&lt;br /&gt;
		:addClass(collapsible_class) -- we made the determination earlier&lt;br /&gt;
		:cssText(navbar_style)&lt;br /&gt;
&lt;br /&gt;
	if is_mini then div:addClass(cfg.classes.mini) end&lt;br /&gt;
&lt;br /&gt;
	local box_text = (args.text or cfg.box_text) .. &#039; &#039;&lt;br /&gt;
	 -- the concatenated space guarantees the box text is separated&lt;br /&gt;
	if not (is_mini or is_plain) then&lt;br /&gt;
		div&lt;br /&gt;
			:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(cfg.classes.box_text)&lt;br /&gt;
				:cssText(font_style)&lt;br /&gt;
				:wikitext(box_text)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local template = args.template&lt;br /&gt;
	local displayed_links = choose_links(template, args)&lt;br /&gt;
	local has_brackets = args.brackets&lt;br /&gt;
	local title_arg = get_title_arg(is_collapsible, template)&lt;br /&gt;
	local title_text = args[title_arg] or (&#039;:&#039; .. mw.getCurrentFrame():getParent():getTitle())&lt;br /&gt;
	local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)&lt;br /&gt;
	div:node(list)&lt;br /&gt;
&lt;br /&gt;
	if is_collapsible then&lt;br /&gt;
		local title_text_class&lt;br /&gt;
		if is_mini then&lt;br /&gt;
			title_text_class = cfg.classes.collapsible_title_mini&lt;br /&gt;
		else&lt;br /&gt;
			title_text_class = cfg.classes.collapsible_title_full&lt;br /&gt;
		end&lt;br /&gt;
		div:done()&lt;br /&gt;
			:tag(&#039;div&#039;)&lt;br /&gt;
			:addClass(title_text_class)&lt;br /&gt;
			:cssText(font_style)&lt;br /&gt;
			:wikitext(args[1])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	-- hlist -&amp;gt; navbar is best-effort to preserve old Common.css ordering.&lt;br /&gt;
	return frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = cfg.hlist_templatestyles }&lt;br /&gt;
	} .. frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = cfg.templatestyles }&lt;br /&gt;
	} .. tostring(div:done())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navbar(frame)&lt;br /&gt;
	return p._navbar(require(&#039;Module:Arguments&#039;).getArgs(frame))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Infobox&amp;diff=141</id>
		<title>Template:Infobox</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Infobox&amp;diff=141"/>
		<updated>2023-06-08T11:36:54Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add wrapper around Module:Infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Infobox|infobox}}&amp;lt;includeonly&amp;gt;{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go in the /doc subpage, and interwikis go in Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Str_left&amp;diff=140</id>
		<title>Template:Str left</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Str_left&amp;diff=140"/>
		<updated>2023-06-08T11:36:42Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Another string modification template for the Infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{safesubst:padleft:|{{{2|1}}}|{{{1}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Remove_first_word&amp;diff=139</id>
		<title>Template:Remove first word</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Remove_first_word&amp;diff=139"/>
		<updated>2023-06-08T11:36:05Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Small string modification template for the Infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;#invoke:String|replace|source={{{1}}}|pattern=^[^{{{sep|%s}}}]*{{{sep|%s}}}*|replace=|plain=false}}&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Module:Infobox/styles.css&amp;diff=138</id>
		<title>Module:Infobox/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Module:Infobox/styles.css&amp;diff=138"/>
		<updated>2023-06-08T11:35:05Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the styles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp|small=y}} */&lt;br /&gt;
/*&lt;br /&gt;
 * This TemplateStyles sheet deliberately does NOT include the full set of&lt;br /&gt;
 * infobox styles. We are still working to migrate all of the manual&lt;br /&gt;
 * infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]]&lt;br /&gt;
 * DO NOT ADD THEM HERE&lt;br /&gt;
 */&lt;br /&gt;
/*&lt;br /&gt;
 * not strictly certain these styles are necessary since the modules now&lt;br /&gt;
 * exclusively output infobox-subbox or infobox, not both&lt;br /&gt;
 * just replicating the module faithfully&lt;br /&gt;
 */&lt;br /&gt;
.infobox-subbox {&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	margin: -3px;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	min-width: 100%;&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
	clear: none;&lt;br /&gt;
	float: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-3cols-child {&lt;br /&gt;
	margin: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox .navbar {&lt;br /&gt;
	font-size: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* T281642 */&lt;br /&gt;
body.skin-minerva .infobox-header,&lt;br /&gt;
body.skin-minerva .infobox-subheader,&lt;br /&gt;
body.skin-minerva  .infobox-above,&lt;br /&gt;
body.skin-minerva .infobox-title,&lt;br /&gt;
body.skin-minerva  .infobox-image,&lt;br /&gt;
body.skin-minerva  .infobox-full-data,&lt;br /&gt;
body.skin-minerva .infobox-below {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Module:Infobox&amp;diff=137</id>
		<title>Module:Infobox</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Module:Infobox&amp;diff=137"/>
		<updated>2023-06-08T11:32:43Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the Infobox generator&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local args = {}&lt;br /&gt;
local origArgs = {}&lt;br /&gt;
local root&lt;br /&gt;
local empty_row_categories = {}&lt;br /&gt;
local category_in_empty_row_pattern = &#039;%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]&#039;&lt;br /&gt;
local has_rows = false&lt;br /&gt;
local lists = {&lt;br /&gt;
	plainlist_t = {&lt;br /&gt;
		patterns = {&lt;br /&gt;
			&#039;^plainlist$&#039;,&lt;br /&gt;
			&#039;%splainlist$&#039;,&lt;br /&gt;
			&#039;^plainlist%s&#039;,&lt;br /&gt;
			&#039;%splainlist%s&#039;&lt;br /&gt;
		},&lt;br /&gt;
		found = false,&lt;br /&gt;
		styles = &#039;Plainlist/styles.css&#039;&lt;br /&gt;
	},&lt;br /&gt;
	hlist_t = {&lt;br /&gt;
		patterns = {&lt;br /&gt;
			&#039;^hlist$&#039;,&lt;br /&gt;
			&#039;%shlist$&#039;,&lt;br /&gt;
			&#039;^hlist%s&#039;,&lt;br /&gt;
			&#039;%shlist%s&#039;&lt;br /&gt;
		},&lt;br /&gt;
		found = false,&lt;br /&gt;
		styles = &#039;Hlist/styles.css&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function has_list_class(args_to_check)&lt;br /&gt;
	for _, list in pairs(lists) do&lt;br /&gt;
		if not list.found then&lt;br /&gt;
			for _, arg in pairs(args_to_check) do&lt;br /&gt;
				for _, pattern in ipairs(list.patterns) do&lt;br /&gt;
					if mw.ustring.find(arg or &#039;&#039;, pattern) then&lt;br /&gt;
						list.found = true&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if list.found then break end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fixChildBoxes(sval, tt)&lt;br /&gt;
	local function notempty( s ) return s and s:match( &#039;%S&#039; ) end&lt;br /&gt;
	&lt;br /&gt;
	if notempty(sval) then&lt;br /&gt;
		local marker = &#039;&amp;lt;span class=special_infobox_marker&amp;gt;&#039;&lt;br /&gt;
		local s = sval&lt;br /&gt;
		-- start moving templatestyles and categories inside of table rows&lt;br /&gt;
		local slast = &#039;&#039;&lt;br /&gt;
		while slast ~= s do&lt;br /&gt;
			slast = s&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;(&amp;lt;/[Tt][Rr]%s*&amp;gt;%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])&#039;, &#039;%2%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;(&amp;lt;/[Tt][Rr]%s*&amp;gt;%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)&#039;, &#039;%2%1&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		-- end moving templatestyles and categories inside of table rows&lt;br /&gt;
		s = mw.ustring.gsub(s, &#039;(&amp;lt;%s*[Tt][Rr])&#039;, marker .. &#039;%1&#039;)&lt;br /&gt;
		s = mw.ustring.gsub(s, &#039;(&amp;lt;/[Tt][Rr]%s*&amp;gt;)&#039;, &#039;%1&#039; .. marker)&lt;br /&gt;
		if s:match(marker) then&lt;br /&gt;
			s = mw.ustring.gsub(s, marker .. &#039;%s*&#039; .. marker, &#039;&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;([\r\n]|-[^\r\n]*[\r\n])%s*&#039; .. marker, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, marker .. &#039;%s*([\r\n]|-)&#039;, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;(&amp;lt;/[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*&amp;gt;%s*)&#039; .. marker, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;(&amp;lt;%s*[Tt][Aa][Bb][Ll][Ee][^&amp;lt;&amp;gt;]*&amp;gt;%s*)&#039; .. marker, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;^(%{|[^\r\n]*[\r\n]%s*)&#039; .. marker, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;([\r\n]%{|[^\r\n]*[\r\n]%s*)&#039; .. marker, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, marker .. &#039;(%s*&amp;lt;/[Tt][Aa][Bb][Ll][Ee]%s*&amp;gt;)&#039;, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, marker .. &#039;(%s*\n|%})&#039;, &#039;%1&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if s:match(marker) then&lt;br /&gt;
			local subcells = mw.text.split(s, marker)&lt;br /&gt;
			s = &#039;&#039;&lt;br /&gt;
			for k = 1, #subcells do&lt;br /&gt;
				if k == 1 then&lt;br /&gt;
					s = s .. subcells[k] .. &#039;&amp;lt;/&#039; .. tt .. &#039;&amp;gt;&amp;lt;/tr&amp;gt;&#039;&lt;br /&gt;
				elseif k == #subcells then&lt;br /&gt;
					local rowstyle = &#039; style=&amp;quot;display:none&amp;quot;&#039;&lt;br /&gt;
					if notempty(subcells[k]) then rowstyle = &#039;&#039;	end&lt;br /&gt;
					s = s .. &#039;&amp;lt;tr&#039; .. rowstyle ..&#039;&amp;gt;&amp;lt;&#039; .. tt .. &#039; colspan=2&amp;gt;\n&#039; ..&lt;br /&gt;
						subcells[k]&lt;br /&gt;
				elseif notempty(subcells[k]) then&lt;br /&gt;
					if (k % 2) == 0 then&lt;br /&gt;
						s = s .. subcells[k]&lt;br /&gt;
					else&lt;br /&gt;
						s = s .. &#039;&amp;lt;tr&amp;gt;&amp;lt;&#039; .. tt .. &#039; colspan=2&amp;gt;\n&#039; ..&lt;br /&gt;
							subcells[k] .. &#039;&amp;lt;/&#039; .. tt .. &#039;&amp;gt;&amp;lt;/tr&amp;gt;&#039;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- the next two lines add a newline at the end of lists for the PHP parser&lt;br /&gt;
		-- [[Special:Diff/849054481]]&lt;br /&gt;
		-- remove when [[:phab:T191516]] is fixed or OBE&lt;br /&gt;
		s = mw.ustring.gsub(s, &#039;([\r\n][%*#;:][^\r\n]*)$&#039;, &#039;%1\n&#039;)&lt;br /&gt;
		s = mw.ustring.gsub(s, &#039;^([%*#;:][^\r\n]*)$&#039;, &#039;%1\n&#039;)&lt;br /&gt;
		s = mw.ustring.gsub(s, &#039;^([%*#;:])&#039;, &#039;\n%1&#039;)&lt;br /&gt;
		s = mw.ustring.gsub(s, &#039;^(%{%|)&#039;, &#039;\n%1&#039;)&lt;br /&gt;
		return s&lt;br /&gt;
	else&lt;br /&gt;
		return sval&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Cleans empty tables&lt;br /&gt;
local function cleanInfobox()&lt;br /&gt;
	root = tostring(root)&lt;br /&gt;
	if has_rows == false then&lt;br /&gt;
		root = mw.ustring.gsub(root, &#039;&amp;lt;table[^&amp;lt;&amp;gt;]*&amp;gt;%s*&amp;lt;/table&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Returns the union of the values of two tables, as a sequence.&lt;br /&gt;
local function union(t1, t2)&lt;br /&gt;
&lt;br /&gt;
	local vals = {}&lt;br /&gt;
	for k, v in pairs(t1) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(t2) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(vals) do&lt;br /&gt;
		table.insert(ret, k)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Returns a table containing the numbers of the arguments that exist&lt;br /&gt;
-- for the specified prefix. For example, if the prefix was &#039;data&#039;, and&lt;br /&gt;
-- &#039;data1&#039;, &#039;data2&#039;, and &#039;data5&#039; exist, it would return {1, 2, 5}.&lt;br /&gt;
local function getArgNums(prefix)&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local num = tostring(k):match(&#039;^&#039; .. prefix .. &#039;([1-9]%d*)$&#039;)&lt;br /&gt;
		if num then table.insert(nums, tonumber(num)) end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Adds a row to the infobox, with either a header cell&lt;br /&gt;
-- or a label/data cell combination.&lt;br /&gt;
local function addRow(rowArgs)&lt;br /&gt;
	&lt;br /&gt;
	if rowArgs.header and rowArgs.header ~= &#039;_BLANK_&#039; then&lt;br /&gt;
		has_rows = true&lt;br /&gt;
		has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass })&lt;br /&gt;
		&lt;br /&gt;
		root&lt;br /&gt;
			:tag(&#039;tr&#039;)&lt;br /&gt;
				:addClass(rowArgs.rowclass)&lt;br /&gt;
				:cssText(rowArgs.rowstyle)&lt;br /&gt;
				:tag(&#039;th&#039;)&lt;br /&gt;
					:attr(&#039;colspan&#039;, &#039;2&#039;)&lt;br /&gt;
					:addClass(&#039;infobox-header&#039;)&lt;br /&gt;
					:addClass(rowArgs.class)&lt;br /&gt;
					:addClass(args.headerclass)&lt;br /&gt;
					-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-header&lt;br /&gt;
					:cssText(args.headerstyle)&lt;br /&gt;
					:cssText(rowArgs.rowcellstyle)&lt;br /&gt;
					:wikitext(fixChildBoxes(rowArgs.header, &#039;th&#039;))&lt;br /&gt;
		if rowArgs.data then&lt;br /&gt;
			root:wikitext(&lt;br /&gt;
				&#039;[[Category:Pages using infobox templates with ignored data cells]]&#039;&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, &#039;&#039;):match(&#039;^%S&#039;) then&lt;br /&gt;
		has_rows = true&lt;br /&gt;
		has_list_class({ rowArgs.rowclass, rowArgs.class })&lt;br /&gt;
		&lt;br /&gt;
		local row = root:tag(&#039;tr&#039;)&lt;br /&gt;
		row:addClass(rowArgs.rowclass)&lt;br /&gt;
		row:cssText(rowArgs.rowstyle)&lt;br /&gt;
		if rowArgs.label then&lt;br /&gt;
			row&lt;br /&gt;
				:tag(&#039;th&#039;)&lt;br /&gt;
					:attr(&#039;scope&#039;, &#039;row&#039;)&lt;br /&gt;
					:addClass(&#039;infobox-label&#039;)&lt;br /&gt;
					-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-label&lt;br /&gt;
					:cssText(args.labelstyle)&lt;br /&gt;
					:cssText(rowArgs.rowcellstyle)&lt;br /&gt;
					:wikitext(rowArgs.label)&lt;br /&gt;
					:done()&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local dataCell = row:tag(&#039;td&#039;)&lt;br /&gt;
		dataCell&lt;br /&gt;
			:attr(&#039;colspan&#039;, not rowArgs.label and &#039;2&#039; or nil)&lt;br /&gt;
			:addClass(not rowArgs.label and &#039;infobox-full-data&#039; or &#039;infobox-data&#039;)&lt;br /&gt;
			:addClass(rowArgs.class)&lt;br /&gt;
			-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox(-full)-data&lt;br /&gt;
			:cssText(rowArgs.datastyle)&lt;br /&gt;
			:cssText(rowArgs.rowcellstyle)&lt;br /&gt;
			:wikitext(fixChildBoxes(rowArgs.data, &#039;td&#039;))&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(empty_row_categories, rowArgs.data or &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderTitle()&lt;br /&gt;
	if not args.title then return end&lt;br /&gt;
&lt;br /&gt;
	has_rows = true&lt;br /&gt;
	has_list_class({args.titleclass})&lt;br /&gt;
	&lt;br /&gt;
	root&lt;br /&gt;
		:tag(&#039;caption&#039;)&lt;br /&gt;
			:addClass(&#039;infobox-title&#039;)&lt;br /&gt;
			:addClass(args.titleclass)&lt;br /&gt;
			-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-title&lt;br /&gt;
			:cssText(args.titlestyle)&lt;br /&gt;
			:wikitext(args.title)&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderAboveRow()&lt;br /&gt;
	if not args.above then return end&lt;br /&gt;
&lt;br /&gt;
	has_rows = true&lt;br /&gt;
	has_list_class({ args.aboveclass })&lt;br /&gt;
	&lt;br /&gt;
	root&lt;br /&gt;
		:tag(&#039;tr&#039;)&lt;br /&gt;
			:tag(&#039;th&#039;)&lt;br /&gt;
				:attr(&#039;colspan&#039;, &#039;2&#039;)&lt;br /&gt;
				:addClass(&#039;infobox-above&#039;)&lt;br /&gt;
				:addClass(args.aboveclass)&lt;br /&gt;
				-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-above&lt;br /&gt;
				:cssText(args.abovestyle)&lt;br /&gt;
				:wikitext(fixChildBoxes(args.above,&#039;th&#039;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBelowRow()&lt;br /&gt;
	if not args.below then return end&lt;br /&gt;
&lt;br /&gt;
	has_rows = true&lt;br /&gt;
	has_list_class({ args.belowclass })&lt;br /&gt;
	&lt;br /&gt;
	root&lt;br /&gt;
		:tag(&#039;tr&#039;)&lt;br /&gt;
			:tag(&#039;td&#039;)&lt;br /&gt;
				:attr(&#039;colspan&#039;, &#039;2&#039;)&lt;br /&gt;
				:addClass(&#039;infobox-below&#039;)&lt;br /&gt;
				:addClass(args.belowclass)&lt;br /&gt;
				-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-below&lt;br /&gt;
				:cssText(args.belowstyle)&lt;br /&gt;
				:wikitext(fixChildBoxes(args.below,&#039;td&#039;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addSubheaderRow(subheaderArgs)&lt;br /&gt;
	if subheaderArgs.data and&lt;br /&gt;
		subheaderArgs.data:gsub(category_in_empty_row_pattern, &#039;&#039;):match(&#039;^%S&#039;) then&lt;br /&gt;
		has_rows = true&lt;br /&gt;
		has_list_class({ subheaderArgs.rowclass, subheaderArgs.class })&lt;br /&gt;
		&lt;br /&gt;
		local row = root:tag(&#039;tr&#039;)&lt;br /&gt;
		row:addClass(subheaderArgs.rowclass)&lt;br /&gt;
&lt;br /&gt;
		local dataCell = row:tag(&#039;td&#039;)&lt;br /&gt;
		dataCell&lt;br /&gt;
			:attr(&#039;colspan&#039;, &#039;2&#039;)&lt;br /&gt;
			:addClass(&#039;infobox-subheader&#039;)&lt;br /&gt;
			:addClass(subheaderArgs.class)&lt;br /&gt;
			:cssText(subheaderArgs.datastyle)&lt;br /&gt;
			:cssText(subheaderArgs.rowcellstyle)&lt;br /&gt;
			:wikitext(fixChildBoxes(subheaderArgs.data, &#039;td&#039;))&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(empty_row_categories, subheaderArgs.data or &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSubheaders()&lt;br /&gt;
	if args.subheader then&lt;br /&gt;
		args.subheader1 = args.subheader&lt;br /&gt;
	end&lt;br /&gt;
	if args.subheaderrowclass then&lt;br /&gt;
		args.subheaderrowclass1 = args.subheaderrowclass&lt;br /&gt;
	end&lt;br /&gt;
	local subheadernums = getArgNums(&#039;subheader&#039;)&lt;br /&gt;
	for k, num in ipairs(subheadernums) do&lt;br /&gt;
		addSubheaderRow({&lt;br /&gt;
			data = args[&#039;subheader&#039; .. tostring(num)],&lt;br /&gt;
			-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-subheader&lt;br /&gt;
			datastyle = args.subheaderstyle,&lt;br /&gt;
			rowcellstyle = args[&#039;subheaderstyle&#039; .. tostring(num)],&lt;br /&gt;
			class = args.subheaderclass,&lt;br /&gt;
			rowclass = args[&#039;subheaderrowclass&#039; .. tostring(num)]&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addImageRow(imageArgs)&lt;br /&gt;
&lt;br /&gt;
	if imageArgs.data and&lt;br /&gt;
		imageArgs.data:gsub(category_in_empty_row_pattern, &#039;&#039;):match(&#039;^%S&#039;) then&lt;br /&gt;
&lt;br /&gt;
		has_rows = true&lt;br /&gt;
		has_list_class({ imageArgs.rowclass, imageArgs.class })&lt;br /&gt;
		&lt;br /&gt;
		local row = root:tag(&#039;tr&#039;)&lt;br /&gt;
		row:addClass(imageArgs.rowclass)&lt;br /&gt;
&lt;br /&gt;
		local dataCell = row:tag(&#039;td&#039;)&lt;br /&gt;
		dataCell&lt;br /&gt;
			:attr(&#039;colspan&#039;, &#039;2&#039;)&lt;br /&gt;
			:addClass(&#039;infobox-image&#039;)&lt;br /&gt;
			:addClass(imageArgs.class)&lt;br /&gt;
			:cssText(imageArgs.datastyle)&lt;br /&gt;
			:wikitext(fixChildBoxes(imageArgs.data, &#039;td&#039;))&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(empty_row_categories, imageArgs.data or &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderImages()&lt;br /&gt;
	if args.image then&lt;br /&gt;
		args.image1 = args.image&lt;br /&gt;
	end&lt;br /&gt;
	if args.caption then&lt;br /&gt;
		args.caption1 = args.caption&lt;br /&gt;
	end&lt;br /&gt;
	local imagenums = getArgNums(&#039;image&#039;)&lt;br /&gt;
	for k, num in ipairs(imagenums) do&lt;br /&gt;
		local caption = args[&#039;caption&#039; .. tostring(num)]&lt;br /&gt;
		local data = mw.html.create():wikitext(args[&#039;image&#039; .. tostring(num)])&lt;br /&gt;
		if caption then&lt;br /&gt;
			data&lt;br /&gt;
				:tag(&#039;div&#039;)&lt;br /&gt;
					:addClass(&#039;infobox-caption&#039;)&lt;br /&gt;
					-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-caption&lt;br /&gt;
					:cssText(args.captionstyle)&lt;br /&gt;
					:wikitext(caption)&lt;br /&gt;
		end&lt;br /&gt;
		addImageRow({&lt;br /&gt;
			data = tostring(data),&lt;br /&gt;
			-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-image&lt;br /&gt;
			datastyle = args.imagestyle,&lt;br /&gt;
			class = args.imageclass,&lt;br /&gt;
			rowclass = args[&#039;imagerowclass&#039; .. tostring(num)]&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- When autoheaders are turned on, preprocesses the rows&lt;br /&gt;
local function preprocessRows()&lt;br /&gt;
	if not args.autoheaders then return end&lt;br /&gt;
	&lt;br /&gt;
	local rownums = union(getArgNums(&#039;header&#039;), getArgNums(&#039;data&#039;))&lt;br /&gt;
	table.sort(rownums)&lt;br /&gt;
	local lastheader&lt;br /&gt;
	for k, num in ipairs(rownums) do&lt;br /&gt;
		if args[&#039;header&#039; .. tostring(num)] then&lt;br /&gt;
			if lastheader then&lt;br /&gt;
				args[&#039;header&#039; .. tostring(lastheader)] = nil&lt;br /&gt;
			end&lt;br /&gt;
			lastheader = num&lt;br /&gt;
		elseif args[&#039;data&#039; .. tostring(num)] and&lt;br /&gt;
			args[&#039;data&#039; .. tostring(num)]:gsub(&lt;br /&gt;
				category_in_empty_row_pattern, &#039;&#039;&lt;br /&gt;
			):match(&#039;^%S&#039;) then&lt;br /&gt;
			local data = args[&#039;data&#039; .. tostring(num)]&lt;br /&gt;
			if data:gsub(category_in_empty_row_pattern, &#039;&#039;):match(&#039;%S&#039;) then&lt;br /&gt;
				lastheader = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if lastheader then&lt;br /&gt;
		args[&#039;header&#039; .. tostring(lastheader)] = nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Gets the union of the header and data argument numbers,&lt;br /&gt;
-- and renders them all in order&lt;br /&gt;
local function renderRows()&lt;br /&gt;
&lt;br /&gt;
	local rownums = union(getArgNums(&#039;header&#039;), getArgNums(&#039;data&#039;))&lt;br /&gt;
	table.sort(rownums)&lt;br /&gt;
	for k, num in ipairs(rownums) do&lt;br /&gt;
		addRow({&lt;br /&gt;
			header = args[&#039;header&#039; .. tostring(num)],&lt;br /&gt;
			label = args[&#039;label&#039; .. tostring(num)],&lt;br /&gt;
			data = args[&#039;data&#039; .. tostring(num)],&lt;br /&gt;
			datastyle = args.datastyle,&lt;br /&gt;
			class = args[&#039;class&#039; .. tostring(num)],&lt;br /&gt;
			rowclass = args[&#039;rowclass&#039; .. tostring(num)],&lt;br /&gt;
			-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; rowclass&lt;br /&gt;
			rowstyle = args[&#039;rowstyle&#039; .. tostring(num)],&lt;br /&gt;
			rowcellstyle = args[&#039;rowcellstyle&#039; .. tostring(num)]&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderNavBar()&lt;br /&gt;
	if not args.name then return end&lt;br /&gt;
&lt;br /&gt;
	has_rows = true&lt;br /&gt;
	root&lt;br /&gt;
		:tag(&#039;tr&#039;)&lt;br /&gt;
			:tag(&#039;td&#039;)&lt;br /&gt;
				:attr(&#039;colspan&#039;, &#039;2&#039;)&lt;br /&gt;
				:addClass(&#039;infobox-navbar&#039;)&lt;br /&gt;
				:wikitext(require(&#039;Module:Navbar&#039;)._navbar{&lt;br /&gt;
					args.name,&lt;br /&gt;
					mini = 1,&lt;br /&gt;
				})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderItalicTitle()&lt;br /&gt;
	local italicTitle = args[&#039;italic title&#039;] and mw.ustring.lower(args[&#039;italic title&#039;])&lt;br /&gt;
	if italicTitle == &#039;&#039; or italicTitle == &#039;force&#039; or italicTitle == &#039;yes&#039; then&lt;br /&gt;
		root:wikitext(require(&#039;Module:Italic title&#039;)._main({}))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Categories in otherwise empty rows are collected in empty_row_categories.&lt;br /&gt;
-- This function adds them to the module output. It is not affected by&lt;br /&gt;
-- args.decat because this module should not prevent module-external categories&lt;br /&gt;
-- from rendering.&lt;br /&gt;
local function renderEmptyRowCategories()&lt;br /&gt;
	for _, s in ipairs(empty_row_categories) do&lt;br /&gt;
		root:wikitext(s)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Render tracking categories. args.decat == turns off tracking categories.&lt;br /&gt;
local function renderTrackingCategories()&lt;br /&gt;
	if args.decat == &#039;yes&#039; then return end&lt;br /&gt;
	if args.child == &#039;yes&#039; then&lt;br /&gt;
		if args.title then&lt;br /&gt;
			root:wikitext(&lt;br /&gt;
				&#039;[[Category:Pages using embedded infobox templates with the title parameter]]&#039;&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif #(getArgNums(&#039;data&#039;)) == 0 and mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
		root:wikitext(&#039;[[Category:Articles using infobox templates with no data rows]]&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[=[&lt;br /&gt;
Loads the templatestyles for the infobox.&lt;br /&gt;
&lt;br /&gt;
TODO: FINISH loading base templatestyles here rather than in&lt;br /&gt;
MediaWiki:Common.css. There are 4-5000 pages with &#039;raw&#039; infobox tables.&lt;br /&gt;
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :).&lt;br /&gt;
When we do this we should clean up the inline CSS below too.&lt;br /&gt;
Will have to do some bizarre conversion category like with sidebar.&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
local function loadTemplateStyles()&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	&lt;br /&gt;
	local hlist_templatestyles = &#039;&#039;&lt;br /&gt;
	if lists.hlist_t.found then&lt;br /&gt;
		hlist_templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = lists.hlist_t.styles }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local plainlist_templatestyles = &#039;&#039;&lt;br /&gt;
	if lists.plainlist_t.found then&lt;br /&gt;
		plainlist_templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = lists.plainlist_t.styles }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- See function description&lt;br /&gt;
	local base_templatestyles = frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = &#039;Module:Infobox/styles.css&#039; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local templatestyles = &#039;&#039;&lt;br /&gt;
	if args[&#039;templatestyles&#039;] then&lt;br /&gt;
		templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = args[&#039;templatestyles&#039;] }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local child_templatestyles = &#039;&#039;&lt;br /&gt;
	if args[&#039;child templatestyles&#039;] then&lt;br /&gt;
		child_templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = args[&#039;child templatestyles&#039;] }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local grandchild_templatestyles = &#039;&#039;&lt;br /&gt;
	if args[&#039;grandchild templatestyles&#039;] then&lt;br /&gt;
		grandchild_templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = args[&#039;grandchild templatestyles&#039;] }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat({&lt;br /&gt;
		-- hlist -&amp;gt; plainlist -&amp;gt; base is best-effort to preserve old Common.css ordering.&lt;br /&gt;
		-- this ordering is not a guarantee because the rows of interest invoking&lt;br /&gt;
		-- each class may not be on a specific page&lt;br /&gt;
		hlist_templatestyles,&lt;br /&gt;
		plainlist_templatestyles,&lt;br /&gt;
		base_templatestyles,&lt;br /&gt;
		templatestyles,&lt;br /&gt;
		child_templatestyles,&lt;br /&gt;
		grandchild_templatestyles&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- common functions between the child and non child cases&lt;br /&gt;
local function structure_infobox_common()&lt;br /&gt;
	renderSubheaders()&lt;br /&gt;
	renderImages()&lt;br /&gt;
	preprocessRows()&lt;br /&gt;
	renderRows()&lt;br /&gt;
	renderBelowRow()&lt;br /&gt;
	renderNavBar()&lt;br /&gt;
	renderItalicTitle()&lt;br /&gt;
	renderEmptyRowCategories()&lt;br /&gt;
	renderTrackingCategories()&lt;br /&gt;
	cleanInfobox()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Specify the overall layout of the infobox, with special settings if the&lt;br /&gt;
-- infobox is used as a &#039;child&#039; inside another infobox.&lt;br /&gt;
local function _infobox()&lt;br /&gt;
	if args.child ~= &#039;yes&#039; then&lt;br /&gt;
		root = mw.html.create(&#039;table&#039;)&lt;br /&gt;
&lt;br /&gt;
		root&lt;br /&gt;
			:addClass(args.subbox == &#039;yes&#039; and &#039;infobox-subbox&#039; or &#039;infobox&#039;)&lt;br /&gt;
			:addClass(args.bodyclass)&lt;br /&gt;
			-- @deprecated next; target .infobox-&amp;lt;name&amp;gt;&lt;br /&gt;
			:cssText(args.bodystyle)&lt;br /&gt;
		&lt;br /&gt;
		has_list_class({ args.bodyclass })&lt;br /&gt;
&lt;br /&gt;
		renderTitle()&lt;br /&gt;
		renderAboveRow()&lt;br /&gt;
	else&lt;br /&gt;
		root = mw.html.create()&lt;br /&gt;
&lt;br /&gt;
		root&lt;br /&gt;
			:wikitext(args.title)&lt;br /&gt;
	end&lt;br /&gt;
	structure_infobox_common()&lt;br /&gt;
	&lt;br /&gt;
	return loadTemplateStyles() .. root&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- If the argument exists and isn&#039;t blank, add it to the argument table.&lt;br /&gt;
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.&lt;br /&gt;
local function preprocessSingleArg(argName)&lt;br /&gt;
	if origArgs[argName] and origArgs[argName] ~= &#039;&#039; then&lt;br /&gt;
		args[argName] = origArgs[argName]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Assign the parameters with the given prefixes to the args table, in order, in&lt;br /&gt;
-- batches of the step size specified. This is to prevent references etc. from&lt;br /&gt;
-- appearing in the wrong order. The prefixTable should be an array containing&lt;br /&gt;
-- tables, each of which has two possible fields, a &amp;quot;prefix&amp;quot; string and a&lt;br /&gt;
-- &amp;quot;depend&amp;quot; table. The function always parses parameters containing the &amp;quot;prefix&amp;quot;&lt;br /&gt;
-- string, but only parses parameters in the &amp;quot;depend&amp;quot; table if the prefix&lt;br /&gt;
-- parameter is present and non-blank.&lt;br /&gt;
local function preprocessArgs(prefixTable, step)&lt;br /&gt;
	if type(prefixTable) ~= &#039;table&#039; then&lt;br /&gt;
		error(&amp;quot;Non-table value detected for the prefix table&amp;quot;, 2)&lt;br /&gt;
	end&lt;br /&gt;
	if type(step) ~= &#039;number&#039; then&lt;br /&gt;
		error(&amp;quot;Invalid step value detected&amp;quot;, 2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get arguments without a number suffix, and check for bad input.&lt;br /&gt;
	for i,v in ipairs(prefixTable) do&lt;br /&gt;
		if type(v) ~= &#039;table&#039; or type(v.prefix) ~= &amp;quot;string&amp;quot; or&lt;br /&gt;
			(v.depend and type(v.depend) ~= &#039;table&#039;) then&lt;br /&gt;
			error(&#039;Invalid input detected to preprocessArgs prefix table&#039;, 2)&lt;br /&gt;
		end&lt;br /&gt;
		preprocessSingleArg(v.prefix)&lt;br /&gt;
		-- Only parse the depend parameter if the prefix parameter is present&lt;br /&gt;
		-- and not blank.&lt;br /&gt;
		if args[v.prefix] and v.depend then&lt;br /&gt;
			for j, dependValue in ipairs(v.depend) do&lt;br /&gt;
				if type(dependValue) ~= &#039;string&#039; then&lt;br /&gt;
					error(&#039;Invalid &amp;quot;depend&amp;quot; parameter value detected in preprocessArgs&#039;)&lt;br /&gt;
				end&lt;br /&gt;
				preprocessSingleArg(dependValue)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get arguments with number suffixes.&lt;br /&gt;
	local a = 1 -- Counter variable.&lt;br /&gt;
	local moreArgumentsExist = true&lt;br /&gt;
	while moreArgumentsExist == true do&lt;br /&gt;
		moreArgumentsExist = false&lt;br /&gt;
		for i = a, a + step - 1 do&lt;br /&gt;
			for j,v in ipairs(prefixTable) do&lt;br /&gt;
				local prefixArgName = v.prefix .. tostring(i)&lt;br /&gt;
				if origArgs[prefixArgName] then&lt;br /&gt;
					-- Do another loop if any arguments are found, even blank ones.&lt;br /&gt;
					moreArgumentsExist = true&lt;br /&gt;
					preprocessSingleArg(prefixArgName)&lt;br /&gt;
				end&lt;br /&gt;
				-- Process the depend table if the prefix argument is present&lt;br /&gt;
				-- and not blank, or we are processing &amp;quot;prefix1&amp;quot; and &amp;quot;prefix&amp;quot; is&lt;br /&gt;
				-- present and not blank, and if the depend table is present.&lt;br /&gt;
				if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then&lt;br /&gt;
					for j,dependValue in ipairs(v.depend) do&lt;br /&gt;
						local dependArgName = dependValue .. tostring(i)&lt;br /&gt;
						preprocessSingleArg(dependArgName)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		a = a + step&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Parse the data parameters in the same order that the old {{infobox}} did, so&lt;br /&gt;
-- that references etc. will display in the expected places. Parameters that&lt;br /&gt;
-- depend on another parameter are only processed if that parameter is present,&lt;br /&gt;
-- to avoid phantom references appearing in article reference lists.&lt;br /&gt;
local function parseDataParameters()&lt;br /&gt;
&lt;br /&gt;
	preprocessSingleArg(&#039;autoheaders&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;child&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;bodyclass&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;subbox&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;bodystyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;title&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;titleclass&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;titlestyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;above&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;aboveclass&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;abovestyle&#039;)&lt;br /&gt;
	preprocessArgs({&lt;br /&gt;
		{prefix = &#039;subheader&#039;, depend = {&#039;subheaderstyle&#039;, &#039;subheaderrowclass&#039;}}&lt;br /&gt;
	}, 10)&lt;br /&gt;
	preprocessSingleArg(&#039;subheaderstyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;subheaderclass&#039;)&lt;br /&gt;
	preprocessArgs({&lt;br /&gt;
		{prefix = &#039;image&#039;, depend = {&#039;caption&#039;, &#039;imagerowclass&#039;}}&lt;br /&gt;
	}, 10)&lt;br /&gt;
	preprocessSingleArg(&#039;captionstyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;imagestyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;imageclass&#039;)&lt;br /&gt;
	preprocessArgs({&lt;br /&gt;
		{prefix = &#039;header&#039;},&lt;br /&gt;
		{prefix = &#039;data&#039;, depend = {&#039;label&#039;}},&lt;br /&gt;
		{prefix = &#039;rowclass&#039;},&lt;br /&gt;
		{prefix = &#039;rowstyle&#039;},&lt;br /&gt;
		{prefix = &#039;rowcellstyle&#039;},&lt;br /&gt;
		{prefix = &#039;class&#039;}&lt;br /&gt;
	}, 50)&lt;br /&gt;
	preprocessSingleArg(&#039;headerclass&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;headerstyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;labelstyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;datastyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;below&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;belowclass&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;belowstyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;name&#039;)&lt;br /&gt;
	-- different behaviour for italics if blank or absent&lt;br /&gt;
	args[&#039;italic title&#039;] = origArgs[&#039;italic title&#039;]&lt;br /&gt;
	preprocessSingleArg(&#039;decat&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;templatestyles&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;child templatestyles&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;grandchild templatestyles&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- If called via #invoke, use the args passed into the invoking template.&lt;br /&gt;
-- Otherwise, for testing purposes, assume args are being passed directly in.&lt;br /&gt;
function p.infobox(frame)&lt;br /&gt;
	if frame == mw.getCurrentFrame() then&lt;br /&gt;
		origArgs = frame:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		origArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	parseDataParameters()&lt;br /&gt;
	&lt;br /&gt;
	return _infobox()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- For calling via #invoke within a template&lt;br /&gt;
function p.infoboxTemplate(frame)&lt;br /&gt;
	origArgs = {}&lt;br /&gt;
	for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end&lt;br /&gt;
	&lt;br /&gt;
	parseDataParameters()&lt;br /&gt;
	&lt;br /&gt;
	return _infobox()&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Module:Navbar&amp;diff=136</id>
		<title>Module:Navbar</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Module:Navbar&amp;diff=136"/>
		<updated>2023-06-08T11:31:54Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the Navbar generator&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local cfg = mw.loadData(&#039;Module:Navbar/configuration&#039;)&lt;br /&gt;
&lt;br /&gt;
local function get_title_arg(is_collapsible, template)&lt;br /&gt;
	local title_arg = 1&lt;br /&gt;
	if is_collapsible then title_arg = 2 end&lt;br /&gt;
	if template then title_arg = &#039;template&#039; end&lt;br /&gt;
	return title_arg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function choose_links(template, args)&lt;br /&gt;
	-- The show table indicates the default displayed items.&lt;br /&gt;
	-- view, talk, edit, hist, move, watch&lt;br /&gt;
	-- TODO: Move to configuration.&lt;br /&gt;
	local show = {true, true, true, false, false, false}&lt;br /&gt;
	if template then&lt;br /&gt;
		show[2] = false&lt;br /&gt;
		show[3] = false&lt;br /&gt;
		local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,&lt;br /&gt;
			talk = 2, edit = 3, hist = 4, move = 5, watch = 6}&lt;br /&gt;
		-- TODO: Consider removing TableTools dependency.&lt;br /&gt;
		for _, v in ipairs(require (&#039;Module:TableTools&#039;).compressSparseArray(args)) do&lt;br /&gt;
			local num = index[v]&lt;br /&gt;
			if num then show[num] = true end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local remove_edit_link = args.noedit&lt;br /&gt;
	if remove_edit_link then show[3] = false end&lt;br /&gt;
	&lt;br /&gt;
	return show&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function add_link(link_description, ul, is_mini, font_style)&lt;br /&gt;
	local l&lt;br /&gt;
	if link_description.url then&lt;br /&gt;
		l = {&#039;[&#039;, &#039;&#039;, &#039;]&#039;}&lt;br /&gt;
	else&lt;br /&gt;
		l = {&#039;[[&#039;, &#039;|&#039;, &#039;]]&#039;}&lt;br /&gt;
	end&lt;br /&gt;
	ul:tag(&#039;li&#039;)&lt;br /&gt;
		:addClass(&#039;nv-&#039; .. link_description.full)&lt;br /&gt;
		:wikitext(l[1] .. link_description.link .. l[2])&lt;br /&gt;
		:tag(is_mini and &#039;abbr&#039; or &#039;span&#039;)&lt;br /&gt;
			:attr(&#039;title&#039;, link_description.html_title)&lt;br /&gt;
			:cssText(font_style)&lt;br /&gt;
			:wikitext(is_mini and link_description.mini or link_description.full)&lt;br /&gt;
			:done()&lt;br /&gt;
		:wikitext(l[3])&lt;br /&gt;
		:done()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)&lt;br /&gt;
	if not title then&lt;br /&gt;
		error(cfg.invalid_title .. title_text)&lt;br /&gt;
	end&lt;br /&gt;
	local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	-- TODO: Get link_descriptions and show into the configuration module.&lt;br /&gt;
	-- link_descriptions should be easier...&lt;br /&gt;
	local link_descriptions = {&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;v&#039;, [&#039;full&#039;] = &#039;view&#039;, [&#039;html_title&#039;] = &#039;View this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = title.fullText, [&#039;url&#039;] = false },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;t&#039;, [&#039;full&#039;] = &#039;talk&#039;, [&#039;html_title&#039;] = &#039;Discuss this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = talkpage, [&#039;url&#039;] = false },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;e&#039;, [&#039;full&#039;] = &#039;edit&#039;, [&#039;html_title&#039;] = &#039;Edit this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = title:fullUrl(&#039;action=edit&#039;), [&#039;url&#039;] = true },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;h&#039;, [&#039;full&#039;] = &#039;hist&#039;, [&#039;html_title&#039;] = &#039;History of this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = title:fullUrl(&#039;action=history&#039;), [&#039;url&#039;] = true },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;m&#039;, [&#039;full&#039;] = &#039;move&#039;, [&#039;html_title&#039;] = &#039;Move this template&#039;,&lt;br /&gt;
			[&#039;link&#039;] = mw.title.new(&#039;Special:Movepage&#039;):fullUrl(&#039;target=&#039;..title.fullText), [&#039;url&#039;] = true },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;w&#039;, [&#039;full&#039;] = &#039;watch&#039;, [&#039;html_title&#039;] = &#039;Watch this template&#039;, &lt;br /&gt;
			[&#039;link&#039;] = title:fullUrl(&#039;action=watch&#039;), [&#039;url&#039;] = true }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local ul = mw.html.create(&#039;ul&#039;)&lt;br /&gt;
	if has_brackets then&lt;br /&gt;
		ul:addClass(cfg.classes.brackets)&lt;br /&gt;
			:cssText(font_style)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, _ in ipairs(displayed_links) do&lt;br /&gt;
		if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end&lt;br /&gt;
	end&lt;br /&gt;
	return ul:done()&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._navbar(args)&lt;br /&gt;
	&lt;br /&gt;
	-- TODO: We probably don&#039;t need both fontstyle and fontcolor...&lt;br /&gt;
	local font_style = args.fontstyle&lt;br /&gt;
	local font_color = args.fontcolor&lt;br /&gt;
	local is_collapsible = args.collapsible&lt;br /&gt;
	local is_mini = args.mini&lt;br /&gt;
	local is_plain = args.plain&lt;br /&gt;
	&lt;br /&gt;
	local collapsible_class = nil&lt;br /&gt;
	if is_collapsible then&lt;br /&gt;
		collapsible_class = cfg.classes.collapsible&lt;br /&gt;
		if not is_plain then is_mini = 1 end&lt;br /&gt;
		if font_color then&lt;br /&gt;
			font_style = (font_style or &#039;&#039;) .. &#039;; color: &#039; .. font_color .. &#039;;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local navbar_style = args.style&lt;br /&gt;
	local div = mw.html.create():tag(&#039;div&#039;)&lt;br /&gt;
	div&lt;br /&gt;
		:addClass(cfg.classes.navbar)&lt;br /&gt;
		:addClass(cfg.classes.plainlinks)&lt;br /&gt;
		:addClass(cfg.classes.horizontal_list)&lt;br /&gt;
		:addClass(collapsible_class) -- we made the determination earlier&lt;br /&gt;
		:cssText(navbar_style)&lt;br /&gt;
&lt;br /&gt;
	if is_mini then div:addClass(cfg.classes.mini) end&lt;br /&gt;
&lt;br /&gt;
	local box_text = (args.text or cfg.box_text) .. &#039; &#039;&lt;br /&gt;
	 -- the concatenated space guarantees the box text is separated&lt;br /&gt;
	if not (is_mini or is_plain) then&lt;br /&gt;
		div&lt;br /&gt;
			:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(cfg.classes.box_text)&lt;br /&gt;
				:cssText(font_style)&lt;br /&gt;
				:wikitext(box_text)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local template = args.template&lt;br /&gt;
	local displayed_links = choose_links(template, args)&lt;br /&gt;
	local has_brackets = args.brackets&lt;br /&gt;
	local title_arg = get_title_arg(is_collapsible, template)&lt;br /&gt;
	local title_text = args[title_arg] or (&#039;:&#039; .. mw.getCurrentFrame():getParent():getTitle())&lt;br /&gt;
	local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)&lt;br /&gt;
	div:node(list)&lt;br /&gt;
&lt;br /&gt;
	if is_collapsible then&lt;br /&gt;
		local title_text_class&lt;br /&gt;
		if is_mini then&lt;br /&gt;
			title_text_class = cfg.classes.collapsible_title_mini&lt;br /&gt;
		else&lt;br /&gt;
			title_text_class = cfg.classes.collapsible_title_full&lt;br /&gt;
		end&lt;br /&gt;
		div:done()&lt;br /&gt;
			:tag(&#039;div&#039;)&lt;br /&gt;
			:addClass(title_text_class)&lt;br /&gt;
			:cssText(font_style)&lt;br /&gt;
			:wikitext(args[1])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	-- hlist -&amp;gt; navbar is best-effort to preserve old Common.css ordering.&lt;br /&gt;
	return frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = cfg.hlist_templatestyles }&lt;br /&gt;
	} .. frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = cfg.templatestyles }&lt;br /&gt;
	} .. tostring(div:done())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navbar(frame)&lt;br /&gt;
	return p._navbar(require(&#039;Module:Arguments&#039;).getArgs(frame))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Module:Navbar/styles.css&amp;diff=135</id>
		<title>Module:Navbar/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Module:Navbar/styles.css&amp;diff=135"/>
		<updated>2023-06-08T11:31:43Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the styling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp|small=yes}} */&lt;br /&gt;
.navbar {&lt;br /&gt;
	display: inline;&lt;br /&gt;
	font-size: 88%;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-collapse {&lt;br /&gt;
	float: left;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-boxtext {&lt;br /&gt;
	word-spacing: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar ul {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	line-height: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-brackets::before {&lt;br /&gt;
	margin-right: -0.125em;&lt;br /&gt;
	content: &#039;[ &#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-brackets::after {&lt;br /&gt;
	margin-left: -0.125em;&lt;br /&gt;
	content: &#039; ]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar li {&lt;br /&gt;
	word-spacing: -0.125em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar a &amp;gt; span,&lt;br /&gt;
.navbar a &amp;gt; abbr {&lt;br /&gt;
	text-decoration: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-mini abbr {&lt;br /&gt;
	font-variant: small-caps;&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	cursor: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-ct-full {&lt;br /&gt;
	font-size: 114%;&lt;br /&gt;
	margin: 0 7em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-ct-mini {&lt;br /&gt;
	font-size: 114%;&lt;br /&gt;
	margin: 0 4em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Module:Navbar/config&amp;diff=134</id>
		<title>Module:Navbar/config</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Module:Navbar/config&amp;diff=134"/>
		<updated>2023-06-08T11:31:39Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the configuration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
	[&#039;templatestyles&#039;] = &#039;Module:Navbar/styles.css&#039;,&lt;br /&gt;
	[&#039;hlist_templatestyles&#039;] = &#039;Hlist/styles.css&#039;,&lt;br /&gt;
	[&#039;box_text&#039;] = &#039;This box: &#039;,			-- default text box when not plain or mini&lt;br /&gt;
	[&#039;title_namespace&#039;] = &#039;Template&#039;,		-- namespace to default to for title&lt;br /&gt;
	[&#039;invalid_title&#039;] = &#039;Invalid title &#039;,&lt;br /&gt;
	[&#039;classes&#039;] = { -- set a line to nil if you don&#039;t want it&lt;br /&gt;
		[&#039;navbar&#039;] = &#039;navbar&#039;,&lt;br /&gt;
		[&#039;plainlinks&#039;] = &#039;plainlinks&#039;, -- plainlinks&lt;br /&gt;
		[&#039;horizontal_list&#039;] = &#039;hlist&#039;, -- horizontal list class&lt;br /&gt;
		[&#039;mini&#039;] = &#039;navbar-mini&#039;, -- class indicating small links in the navbar&lt;br /&gt;
		[&#039;this_box&#039;] = &#039;navbar-boxtext&#039;,&lt;br /&gt;
		[&#039;brackets&#039;] = &#039;navbar-brackets&#039;,&lt;br /&gt;
		-- &#039;collapsible&#039; is the key for a class to indicate the navbar is&lt;br /&gt;
		-- setting up the collapsible element in addition to the normal&lt;br /&gt;
		-- navbar.&lt;br /&gt;
		[&#039;collapsible&#039;] = &#039;navbar-collapse&#039;,&lt;br /&gt;
		[&#039;collapsible_title_mini&#039;] = &#039;navbar-ct-mini&#039;,&lt;br /&gt;
		[&#039;collapsible_title_full&#039;] = &#039;navbar-ct-full&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Italic_title/doc&amp;diff=133</id>
		<title>Template:Italic title/doc</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Italic_title/doc&amp;diff=133"/>
		<updated>2023-06-08T11:28:47Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the necessary documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Categories go where indicated at the bottom of this page, please; interwikis go to Wikidata (see also: [[Wikipedia:Wikidata]]) --&amp;gt;&lt;br /&gt;
{{Lua|Module:Italic title}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Template:Italic title&#039;&#039;&#039; italicizes page titles. Article titles cannot contain wiki formatting, such as &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, so article titles cannot be italicized in the normal way. This template has the following effects:&lt;br /&gt;
&lt;br /&gt;
* Titles with no [[w:parentheses|parentheses]] &amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt; are fully italicised:&lt;br /&gt;
** {{Nowrap|&amp;lt;code&amp;gt;Foo&amp;lt;/code&amp;gt;}} &amp;amp;rarr; {{Nowrap|&#039;&#039;&#039;&#039;&#039;Foo&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
** {{Nowrap|&amp;lt;code&amp;gt;Talk:Foo&amp;lt;/code&amp;gt;}} &amp;amp;rarr; {{Nowrap|&#039;&#039;&#039;Talk:&#039;&#039;Foo&#039;&#039;&#039;&#039;&#039;}}&lt;br /&gt;
* Titles which contain parentheses are italicised before the first opening parenthesis:&lt;br /&gt;
** {{Nowrap|&amp;lt;code&amp;gt;Foo (bar)&amp;lt;/code&amp;gt;}} &amp;amp;rarr; {{Nowrap|&#039;&#039;&#039;&#039;&#039;Foo&#039;&#039; (bar)&#039;&#039;&#039;}}&lt;br /&gt;
** {{Nowrap|&amp;lt;code&amp;gt;Talk:Foo (bar)&amp;lt;/code&amp;gt;}} &amp;amp;rarr; {{Nowrap|&#039;&#039;&#039;Talk:&#039;&#039;Foo&#039;&#039; (bar)&#039;&#039;&#039;}}&lt;br /&gt;
* Italicization can be forced on parenthesized text with the {{para|all|yes}} parameter.&lt;br /&gt;
&lt;br /&gt;
This template should only be used in articles that meet the criteria for italic titles given in the [[w:Article titles#Italics and other formatting|Article titles]] policy.&lt;br /&gt;
&lt;br /&gt;
Meta templates which use this template should place {{Tl|Auto italic title}} in their documentation.&lt;br /&gt;
&lt;br /&gt;
==Location on page==&lt;br /&gt;
If the page has a {{Tl|Short description}} template, this template should go immediately underneath it, normally as the second item on the page. If there is no {{Tl|Short description}} template, add this template at the very top of the page, above everything else. There ought to be no blank line after {{tlg|Italic title|nolink=1}} because that will cause an extra blank line in the page&#039;s rendered appearance.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
===Basic usage===&lt;br /&gt;
{{tlx|Italic title}}&lt;br /&gt;
&lt;br /&gt;
===All parameters===&lt;br /&gt;
{{tlx|Italic title|noerror|string{{=}}text in title|all{{=}}yes}}&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
* {{para|1}}: if this is set to {{para|1|noerror}}, error messages are suppressed. See [[#Errors]] for more details.&lt;br /&gt;
* {{para|all}}: if this is set to {{para|all|yes}}, text in parentheses is italicized.&lt;br /&gt;
* {{para|string}}: instead of italicizing the whole title, italicize only some specific text. For example, using {{para|string|Ally McBeal}} on the page {{nowrap|&amp;quot;List of Ally McBeal episodes&amp;quot;}} would result in {{nowrap|&amp;quot;List of &#039;&#039;Ally McBeal&#039;&#039; episodes&amp;quot;}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;[[Wikipedia:Page name#Changing the displayed title|DISPLAYTITLE]]:Desired Title&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; can be used instead in cases not covered by the parameters, e.g. two substrings with italics, or italics combined with lowercase first character.&lt;br /&gt;
&lt;br /&gt;
== Errors ==&lt;br /&gt;
Sometimes you may see red error messages like this at the top of the page:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;Warning: Display title &amp;quot;&amp;lt;i&amp;gt;Article title (disambiguation)&amp;lt;/i&amp;gt;&amp;quot; overrides earlier display title &amp;quot;&amp;lt;i&amp;gt;Article title&amp;lt;/i&amp;gt; (disambiguation)&amp;quot;.&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This usually means that there is another instance of {{tl|Italic title}} on the page, usually added by one of the infoboxes. Certain infoboxes, for example {{tl|Infobox album}}, add {{tl|Italic title}} by default. Check the template documentation for any infobox used on the page; it may have instructions about how to deal with italic titles. You may be able to adjust the italics from the infobox instead of using {{tl|Italic title}} at the top of the article. Or if that doesn&#039;t work, you may be able to disable the infobox&#039;s italics code altogether.&lt;br /&gt;
&lt;br /&gt;
If you are still having problems, try putting {{tl|Italic title}} after the infobox. You can suppress the error message by using the code &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Italic title|noerror}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Technical details: this template uses the [[Wikipedia:Magic words#Behavior switches|DISPLAYTITLE magic word]] to italicize the title. Error messages can be produced by any two templates which use this magic word, and are not limited to this template. If you are unsure why you are getting a particular error message, you can ask about it at [[Wikipedia:Village pump (technical)]].&lt;br /&gt;
&lt;br /&gt;
== Tracking categories ==&lt;br /&gt;
If the {{para|string}} parameter is used but that string is not found in the title, the page is added to [[:Category:Pages using italic title with no matching string]].&lt;br /&gt;
&lt;br /&gt;
== TemplateData ==&lt;br /&gt;
{{TemplateData header}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;A template to italicize article titles&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Error options&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If set to \&amp;quot;noerror\&amp;quot;, suppresses error messages. Using this is a last-ditch fix - see the template documentation for other options.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;all&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;All&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;If set to \&amp;quot;yes\&amp;quot;, italicization is forced on parenthesized text.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: false&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;string&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;String&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Specify a string in the title to italicize, rather than italicizing the entire title.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: false&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[wikipediawikipedia:ITALICTITLE|WP:ITALICTITLE]]&lt;br /&gt;
&lt;br /&gt;
{{When on basepage&lt;br /&gt;
|&amp;lt;!-- Categories go below this line, please; interwikis go to Wikidata, thank you! --&amp;gt;&lt;br /&gt;
[[Category:Correct title templates]]&lt;br /&gt;
[[Category:Lua-based templates]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Italic_title&amp;diff=132</id>
		<title>Template:Italic title</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Italic_title&amp;diff=132"/>
		<updated>2023-06-08T11:28:38Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Wrapper around Module:Italic title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Italic title|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage and interwikis to Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Yesno&amp;diff=131</id>
		<title>Template:Yesno</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Yesno&amp;diff=131"/>
		<updated>2023-06-08T11:24:43Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Module:Yesno, but as a template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;#switch: {{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;lc: {{{1|¬}}} }}&lt;br /&gt;
 |no&lt;br /&gt;
 |n&lt;br /&gt;
 |f&lt;br /&gt;
 |false&lt;br /&gt;
 |off&lt;br /&gt;
 |0        = {{{no|&amp;lt;!-- null --&amp;gt;}}}&lt;br /&gt;
 |         = {{{blank|{{{no|&amp;lt;!-- null --&amp;gt;}}}}}}&lt;br /&gt;
 |¬        = {{{¬|}}}&lt;br /&gt;
 |yes&lt;br /&gt;
 |y&lt;br /&gt;
 |t&lt;br /&gt;
 |true&lt;br /&gt;
 |on&lt;br /&gt;
 |1        = {{{yes|yes}}}&lt;br /&gt;
 |#default = {{{def|{{{yes|yes}}}}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Nowrap&amp;diff=130</id>
		<title>Template:Nowrap</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Nowrap&amp;diff=130"/>
		<updated>2023-06-08T11:23:08Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Create the actual nowrap helper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc page; interwikis go to Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:When_on_basepage&amp;diff=129</id>
		<title>Template:When on basepage</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:When_on_basepage&amp;diff=129"/>
		<updated>2023-06-08T11:22:20Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the basepage detection metatemplate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#switch:&lt;br /&gt;
  &amp;lt;!--If no or empty &amp;quot;page&amp;quot; parameter then detect&lt;br /&gt;
      basepage/subpage/subsubpage--&amp;gt;&lt;br /&gt;
  {{#if:{{{page|}}}&lt;br /&gt;
  | {{#if:{{#titleparts:{{{page}}}|0|3}}&lt;br /&gt;
    | subsubpage    &amp;lt;!--Subsubpage or lower--&amp;gt;&lt;br /&gt;
    | {{#if:{{#titleparts:{{{page}}}|0|2}}&lt;br /&gt;
      | subpage&lt;br /&gt;
      | basepage&lt;br /&gt;
      }}&lt;br /&gt;
    }}&lt;br /&gt;
  | {{#if:{{#titleparts:{{FULLPAGENAME}}|0|3}}&lt;br /&gt;
    | subsubpage    &amp;lt;!--Subsubpage or lower--&amp;gt;&lt;br /&gt;
    | {{#if:{{#titleparts:{{FULLPAGENAME}}|0|2}}&lt;br /&gt;
      | subpage&lt;br /&gt;
      | basepage&lt;br /&gt;
      }}&lt;br /&gt;
    }}&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
| basepage   = {{{1|}}}&lt;br /&gt;
| subpage    = {{{2|}}}&lt;br /&gt;
| subsubpage = {{{3| {{{2|}}} }}}   &amp;lt;!--Respecting empty parameter on purpose--&amp;gt;&lt;br /&gt;
}}&amp;lt;!--End switch--&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Module:Italic_title&amp;diff=128</id>
		<title>Module:Italic title</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Module:Italic_title&amp;diff=128"/>
		<updated>2023-06-08T11:17:18Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the italic title generator&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{italic title}}.&lt;br /&gt;
&lt;br /&gt;
require(&#039;strict&#039;)&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- ItalicTitle class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local ItalicTitle = {}&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
	----------------------------------------------------------------------------&lt;br /&gt;
	-- Class attributes and functions&lt;br /&gt;
	-- Things that belong to the class are here. Things that belong to each&lt;br /&gt;
	-- object are in the constructor.&lt;br /&gt;
	----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	-- Keys of title parts that can be italicized.&lt;br /&gt;
	local italicizableKeys = {&lt;br /&gt;
		namespace = true,&lt;br /&gt;
		title = true,&lt;br /&gt;
		dab = true,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------------&lt;br /&gt;
	-- ItalicTitle constructor&lt;br /&gt;
	-- This contains all the dynamic attributes and methods.&lt;br /&gt;
	----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	function ItalicTitle.new()&lt;br /&gt;
		local obj = {}&lt;br /&gt;
&lt;br /&gt;
		-- Function for checking self variable in methods.&lt;br /&gt;
		local checkSelf = libraryUtil.makeCheckSelfFunction(&lt;br /&gt;
			&#039;ItalicTitle&#039;,&lt;br /&gt;
			&#039;obj&#039;,&lt;br /&gt;
			obj,&lt;br /&gt;
			&#039;ItalicTitle object&#039;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		-- Checks a key is present in a lookup table.&lt;br /&gt;
		-- Param: name - the function name.&lt;br /&gt;
		-- Param: argId - integer position of the key in the argument list.&lt;br /&gt;
		-- Param: key - the key.&lt;br /&gt;
		-- Param: lookupTable - the table to look the key up in.&lt;br /&gt;
		local function checkKey(name, argId, key, lookupTable)&lt;br /&gt;
			if not lookupTable[key] then&lt;br /&gt;
				error(string.format(&lt;br /&gt;
					&amp;quot;bad argument #%d to &#039;%s&#039; (&#039;%s&#039; is not a valid key)&amp;quot;,&lt;br /&gt;
					argId,&lt;br /&gt;
					name,&lt;br /&gt;
					key&lt;br /&gt;
				), 3)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Set up object structure.&lt;br /&gt;
		local parsed = false&lt;br /&gt;
		local categories = {}&lt;br /&gt;
		local italicizedKeys = {}&lt;br /&gt;
		local italicizedSubstrings = {}&lt;br /&gt;
&lt;br /&gt;
		-- Parses a title object into its namespace text, title, and&lt;br /&gt;
		-- disambiguation text.&lt;br /&gt;
		-- Param: options - a table of options with the following keys:&lt;br /&gt;
		--     title - the title object to parse&lt;br /&gt;
		--     ignoreDab - ignore any disambiguation parentheses&lt;br /&gt;
		-- Returns the current object.&lt;br /&gt;
		function obj:parseTitle(options)&lt;br /&gt;
			checkSelf(self, &#039;parseTitle&#039;)&lt;br /&gt;
			checkType(&#039;parseTitle&#039;, 1, options, &#039;table&#039;)&lt;br /&gt;
			checkTypeForNamedArg(&#039;parseTitle&#039;, &#039;title&#039;, options.title, &#039;table&#039;)&lt;br /&gt;
			local title = options.title&lt;br /&gt;
		&lt;br /&gt;
			-- Title and dab text&lt;br /&gt;
			local prefix, parentheses&lt;br /&gt;
			if not options.ignoreDab then&lt;br /&gt;
				prefix, parentheses = mw.ustring.match(&lt;br /&gt;
					title.text,&lt;br /&gt;
					&#039;^(.+) %(([^%(%)]+)%)$&#039;&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
			if prefix and parentheses then&lt;br /&gt;
				self.title = prefix&lt;br /&gt;
				self.dab = parentheses&lt;br /&gt;
			else&lt;br /&gt;
				self.title = title.text&lt;br /&gt;
			end&lt;br /&gt;
		&lt;br /&gt;
			-- Namespace&lt;br /&gt;
			local namespace = mw.site.namespaces[title.namespace].name&lt;br /&gt;
			if namespace and #namespace &amp;gt;= 1 then&lt;br /&gt;
				self.namespace = namespace&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Register the object as having parsed a title.&lt;br /&gt;
			parsed = true&lt;br /&gt;
		&lt;br /&gt;
			return self&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Italicizes part of the title.&lt;br /&gt;
		-- Param: key - the key of the title part to be italicized. Possible&lt;br /&gt;
		-- keys are contained in the italicizableKeys table.&lt;br /&gt;
		-- Returns the current object.&lt;br /&gt;
		function obj:italicize(key)&lt;br /&gt;
			checkSelf(self, &#039;italicize&#039;)&lt;br /&gt;
			checkType(&#039;italicize&#039;, 1, key, &#039;string&#039;)&lt;br /&gt;
			checkKey(&#039;italicize&#039;, 1, key, italicizableKeys)&lt;br /&gt;
			italicizedKeys[key] = true&lt;br /&gt;
			return self&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Un-italicizes part of the title.&lt;br /&gt;
		-- Param: key - the key of the title part to be un-italicized. Possible&lt;br /&gt;
		-- keys are contained in the italicizableKeys table.&lt;br /&gt;
		-- Returns the current object.&lt;br /&gt;
		function obj:unitalicize(key)&lt;br /&gt;
			checkSelf(self, &#039;unitalicize&#039;)&lt;br /&gt;
			checkType(&#039;unitalicize&#039;, 1, key, &#039;string&#039;)&lt;br /&gt;
			checkKey(&#039;unitalicize&#039;, 1, key, italicizableKeys)&lt;br /&gt;
			italicizedKeys[key] = nil&lt;br /&gt;
			return self&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Italicizes a substring in the title. This only affects the main part&lt;br /&gt;
		-- of the title, not the namespace or the disambiguation text.&lt;br /&gt;
		-- Param: s - the substring to be italicized.&lt;br /&gt;
		-- Returns the current object.&lt;br /&gt;
		function obj:italicizeSubstring(s)&lt;br /&gt;
			checkSelf(self, &#039;italicizeSubstring&#039;)&lt;br /&gt;
			checkType(&#039;italicizeSubstring&#039;, 1, s, &#039;string&#039;)&lt;br /&gt;
			italicizedSubstrings[s] = true&lt;br /&gt;
			return self&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Un-italicizes a substring in the title. This only affects the main&lt;br /&gt;
		-- part of the title, not the namespace or the disambiguation text.&lt;br /&gt;
		-- Param: s - the substring to be un-italicized.&lt;br /&gt;
		-- Returns the current object.&lt;br /&gt;
		function obj:unitalicizeSubstring(s)&lt;br /&gt;
			checkSelf(self, &#039;unitalicizeSubstring&#039;)&lt;br /&gt;
			checkType(&#039;unitalicizeSubstring&#039;, 1, s, &#039;string&#039;)&lt;br /&gt;
			italicizedSubstrings[s] = nil&lt;br /&gt;
			return self&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Renders the object into a page name. If no title has yet been parsed,&lt;br /&gt;
		-- the current title is used.&lt;br /&gt;
		-- Returns string&lt;br /&gt;
		function obj:renderTitle()&lt;br /&gt;
			checkSelf(self, &#039;renderTitle&#039;)&lt;br /&gt;
&lt;br /&gt;
			-- Italicizes a string&lt;br /&gt;
			-- Param: s - the string to italicize&lt;br /&gt;
			-- Returns string.&lt;br /&gt;
			local function italicize(s)&lt;br /&gt;
				assert(type(s) == &#039;string&#039;, &#039;s was not a string&#039;)&lt;br /&gt;
				assert(s ~= &#039;&#039;, &#039;s was the empty string&#039;)&lt;br /&gt;
				return string.format(&#039;&amp;lt;i&amp;gt;%s&amp;lt;/i&amp;gt;&#039;, s)&lt;br /&gt;
			end&lt;br /&gt;
		&lt;br /&gt;
			-- Escape characters in a string that are magic in Lua patterns.&lt;br /&gt;
			-- Param: pattern - the pattern to escape&lt;br /&gt;
			-- Returns string.&lt;br /&gt;
			local function escapeMagicCharacters(s)&lt;br /&gt;
				assert(type(s) == &#039;string&#039;, &#039;s was not a string&#039;)&lt;br /&gt;
				return s:gsub(&#039;%p&#039;, &#039;%%%0&#039;)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- If a title hasn&#039;t been parsed yet, parse the current title.&lt;br /&gt;
			if not parsed then&lt;br /&gt;
				self:parseTitle{title = mw.title.getCurrentTitle()}&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Italicize the different parts of the title and store them in a&lt;br /&gt;
			-- titleParts table to be joined together later.&lt;br /&gt;
			local titleParts = {}&lt;br /&gt;
&lt;br /&gt;
			-- Italicize the italicizable keys.&lt;br /&gt;
			for key in pairs(italicizableKeys) do&lt;br /&gt;
				if self[key] then&lt;br /&gt;
					if italicizedKeys[key] then&lt;br /&gt;
						titleParts[key] = italicize(self[key])&lt;br /&gt;
					else&lt;br /&gt;
						titleParts[key] = self[key]&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Italicize substrings. If there are any substrings to be&lt;br /&gt;
			-- italicized then start from the raw title, as this overrides any&lt;br /&gt;
			-- italicization of the main part of the title.&lt;br /&gt;
			if next(italicizedSubstrings) then&lt;br /&gt;
				titleParts.title = self.title&lt;br /&gt;
				for s in pairs(italicizedSubstrings) do&lt;br /&gt;
					local pattern = escapeMagicCharacters(s)&lt;br /&gt;
					local italicizedTitle, nReplacements = titleParts.title:gsub(&lt;br /&gt;
						pattern,&lt;br /&gt;
						italicize&lt;br /&gt;
					)&lt;br /&gt;
					titleParts.title = italicizedTitle&lt;br /&gt;
&lt;br /&gt;
					-- If we didn&#039;t make any replacements then it means that we&lt;br /&gt;
					-- have been passed a bad substring or that the page has&lt;br /&gt;
					-- been moved to a bad title, so add a tracking category.&lt;br /&gt;
					if nReplacements &amp;lt; 1 then&lt;br /&gt;
						categories[&#039;Pages using italic title with no matching string&#039;] = true&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			-- Assemble the title together from the parts.&lt;br /&gt;
			local ret = &#039;&#039;&lt;br /&gt;
			if titleParts.namespace then&lt;br /&gt;
				ret = ret .. titleParts.namespace .. &#039;:&#039;&lt;br /&gt;
			end&lt;br /&gt;
			ret = ret .. titleParts.title&lt;br /&gt;
			if titleParts.dab then&lt;br /&gt;
				ret = ret .. &#039; (&#039; .. titleParts.dab .. &#039;)&#039;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			return ret&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Returns an expanded DISPLAYTITLE parser function called with the&lt;br /&gt;
		-- result of obj:renderTitle, plus any other optional arguments.&lt;br /&gt;
		-- Returns string&lt;br /&gt;
		function obj:renderDisplayTitle(...)&lt;br /&gt;
			checkSelf(self, &#039;renderDisplayTitle&#039;)&lt;br /&gt;
			return mw.getCurrentFrame():callParserFunction(&lt;br /&gt;
				&#039;DISPLAYTITLE&#039;,&lt;br /&gt;
				self:renderTitle(),&lt;br /&gt;
				...&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Returns an expanded DISPLAYTITLE parser function called with the&lt;br /&gt;
		-- result of obj:renderTitle, plus any other optional arguments, plus&lt;br /&gt;
		-- any tracking categories.&lt;br /&gt;
		-- Returns string&lt;br /&gt;
		function obj:render(...)&lt;br /&gt;
			checkSelf(self, &#039;render&#039;)&lt;br /&gt;
			local ret = self:renderDisplayTitle(...)&lt;br /&gt;
			for cat in pairs(categories) do&lt;br /&gt;
				ret = ret .. string.format(&lt;br /&gt;
					&#039;[[Category:%s]]&#039;,&lt;br /&gt;
					cat&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
			return ret&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return obj&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function getArgs(frame, wrapper)&lt;br /&gt;
	assert(type(wrapper) == &#039;string&#039;, &#039;wrapper was not a string&#039;)&lt;br /&gt;
	return require(&#039;Module:Arguments&#039;).getArgs(frame, {&lt;br /&gt;
		wrappers = wrapper&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Main function for {{italic title}}&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	checkType(&#039;_main&#039;, 1, args, &#039;table&#039;)&lt;br /&gt;
	local italicTitle = ItalicTitle.new()&lt;br /&gt;
	italicTitle:parseTitle{&lt;br /&gt;
		title = mw.title.getCurrentTitle(),&lt;br /&gt;
		ignoreDab = yesno(args.all, false)&lt;br /&gt;
	}&lt;br /&gt;
	if args.string then&lt;br /&gt;
		italicTitle:italicizeSubstring(args.string)&lt;br /&gt;
	else&lt;br /&gt;
		italicTitle:italicize(&#039;title&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return italicTitle:render(args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	return p._main(getArgs(frame, &#039;Template:Italic title&#039;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._dabonly(args)&lt;br /&gt;
	return ItalicTitle.new()&lt;br /&gt;
		:italicize(&#039;dab&#039;)&lt;br /&gt;
		:render(args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dabonly(frame)&lt;br /&gt;
	return p._dabonly(getArgs(frame, &#039;Template:Italic dab&#039;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Ambox/doc&amp;diff=127</id>
		<title>Template:Ambox/doc</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Ambox/doc&amp;diff=127"/>
		<updated>2023-06-07T23:04:33Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the necessary documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Languages|Template:Ambox}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!--NOTE(lexisother): Re-add once we have mode Mbox templates {{Mbox templates}}--&amp;gt;&lt;br /&gt;
{{Documentation subpage}}&lt;br /&gt;
{{Lua|Module:Message box{{\sandbox}}}}&lt;br /&gt;
&lt;br /&gt;
This is the {{Tl|Ambox}} or &#039;&#039;&#039;Article message box&#039;&#039;&#039; meta-template.&lt;br /&gt;
&lt;br /&gt;
MobileFrontend will treat this template as a page issue. If you don&#039;t want that MobileFrontend does so, you may use a different message box template. See also [[mw:Reading/Web/Projects/Mobile Page Issues|this page]].&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; ===&lt;br /&gt;
The &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below.&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = speedy&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;speedy&amp;lt;/u&amp;gt; — Speedy deletion issues.&lt;br /&gt;
}}&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = delete&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;delete&amp;lt;/u&amp;gt; — Deletion issues.&lt;br /&gt;
}}&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = content&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;content&amp;lt;/u&amp;gt; — Content issues.&lt;br /&gt;
}}&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = style&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;style&amp;lt;/u&amp;gt; — Style issues.&lt;br /&gt;
}}&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = notice&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;notice&amp;lt;/u&amp;gt; — Notices.&lt;br /&gt;
}}&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = move&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;move&amp;lt;/u&amp;gt; — Merge and split proposals.&lt;br /&gt;
}}&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = protection&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;protection&amp;lt;/u&amp;gt; — Protection notices.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If no &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; parameter is given the template defaults to {{para|type|notice}}.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;small=left&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = speedy&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;speedy&amp;lt;/u&amp;gt; — Speedy deletion issues.&lt;br /&gt;
| small = left&lt;br /&gt;
}}&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = delete&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;delete&amp;lt;/u&amp;gt; — Deletion issues.&lt;br /&gt;
| small = left&lt;br /&gt;
}}&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = content&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;content&amp;lt;/u&amp;gt; — Content issues.&lt;br /&gt;
| small = left&lt;br /&gt;
}}&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = style&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;style&amp;lt;/u&amp;gt; — Style issues.&lt;br /&gt;
| small = left&lt;br /&gt;
}}&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = notice&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;notice&amp;lt;/u&amp;gt; — Notices.&lt;br /&gt;
| small = left&lt;br /&gt;
}}&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = move&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;move&amp;lt;/u&amp;gt; — Merge and split proposals.&lt;br /&gt;
| small = left&lt;br /&gt;
}}&lt;br /&gt;
{{Ambox{{\sandbox}}&lt;br /&gt;
| nocat = true&lt;br /&gt;
| type  = protection&lt;br /&gt;
| text  = type=&amp;lt;u&amp;gt;protection&amp;lt;/u&amp;gt; — Protection notices.&lt;br /&gt;
| small = left&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
Other pages:&lt;br /&gt;
* [[w:Template:Mbox]]&lt;br /&gt;
* [[w:Wikipedia:Ambox CSS classes]] — Describes how to use the ambox CSS classes directly in [[Help:Table|wikitable]]s and [[w:HTML element#Tables|HTML tables]].&lt;br /&gt;
* [[w:Wikipedia:Article message boxes]] — The style guideline for creating article message boxes.&lt;br /&gt;
* [[w:Wikipedia talk:Article message boxes]] — For discussion about these matters.&lt;br /&gt;
&lt;br /&gt;
== TemplateData ==&lt;br /&gt;
&amp;lt;!--{{TemplateData header}}--&amp;gt;&lt;br /&gt;
{{Mbox/TemplateData}}&lt;br /&gt;
&amp;lt;!--templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;type&amp;quot;: {&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;speedy&amp;quot;,&lt;br /&gt;
				&amp;quot;delete&amp;quot;,&lt;br /&gt;
				&amp;quot;content&amp;quot;,&lt;br /&gt;
				&amp;quot;style&amp;quot;,&lt;br /&gt;
				&amp;quot;notice&amp;quot;,&lt;br /&gt;
				&amp;quot;move&amp;quot;,&lt;br /&gt;
				&amp;quot;protection&amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;text&amp;quot;: {&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: {&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;This is a generic article message box.&amp;quot;,&lt;br /&gt;
		&amp;quot;cs&amp;quot;: &amp;quot;Toto je obecné okno se zprávou článku.&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata--&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Mbox templates{{#translation:}}]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Mbox/TemplateData&amp;diff=126</id>
		<title>Template:Mbox/TemplateData</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Mbox/TemplateData&amp;diff=126"/>
		<updated>2023-06-07T23:02:40Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the necessary TemplateData for use in Mbox implementers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{TemplateData header|editlinks=1|docpage=Mbox/TemplateData}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;This is the specialized version of the {{mbox}} or “multi namespace message box” meta-template.&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;type&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Type&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;speedy&amp;quot;,&lt;br /&gt;
				&amp;quot;delete&amp;quot;,&lt;br /&gt;
				&amp;quot;content&amp;quot;,&lt;br /&gt;
				&amp;quot;style&amp;quot;,&lt;br /&gt;
				&amp;quot;notice&amp;quot;,&lt;br /&gt;
				&amp;quot;move&amp;quot;,&lt;br /&gt;
				&amp;quot;protection&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;notice&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;image&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Image (left)&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;none&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;Depends on the “type” parameter.&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;imageright&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Image (right)&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;style&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;CSS Style&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;textstyle&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Text CSS Style&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;text&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Text&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;small&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Small?&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;{{{small|}}}&amp;quot;,&lt;br /&gt;
				&amp;quot;left&amp;quot;,&lt;br /&gt;
				&amp;quot;yes&amp;quot;,&lt;br /&gt;
				&amp;quot;1&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;smallimage&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Small Image (left)&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;none&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;{{{image}}}&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;smallimageright&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Small Image (right)&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;none&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;{{{imageright}}}&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;smalltext&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Small Text&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;{{{text}}}&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:TemplateData documentation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:%5Csandbox&amp;diff=125</id>
		<title>Template:\sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:%5Csandbox&amp;diff=125"/>
		<updated>2023-06-07T22:52:06Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the sandbox detector&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#ifeq:{{SUBPAGENAME}}|sandbox|/sandbox}}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Tl/doc&amp;diff=124</id>
		<title>Template:Tl/doc</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Tl/doc&amp;diff=124"/>
		<updated>2023-06-07T22:44:02Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the necessary documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TemplateData ==&lt;br /&gt;
{{TemplateData header|Template link}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;This template provides an easy way to link to other templates, presenting the link in a way similar to a template call in wikitext.&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;template&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The template to be linked&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;Tl&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-template-name&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Internal template-link templates]]&lt;br /&gt;
[[Category:Semantic markup templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Tl&amp;diff=123</id>
		<title>Template:Tl</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Tl&amp;diff=123"/>
		<updated>2023-06-07T22:42:27Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the TemplateLink wrapper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{((}}[[Template:{{{1}}}|{{{1}}}]]{{))}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc subpage and interwikis go on Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Auxiliary_template_common_notice/doc&amp;diff=122</id>
		<title>Template:Auxiliary template common notice/doc</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Auxiliary_template_common_notice/doc&amp;diff=122"/>
		<updated>2023-06-07T22:35:54Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the necessary documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&amp;gt;&lt;br /&gt;
{{TemplateData header|editlinks=1|docpage=Auxiliary template common notice/doc}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;block&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;entity&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;HTML Entity&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;HTML character entity name&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Documentation shared content templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:TemplateData_header/doc&amp;diff=121</id>
		<title>Template:TemplateData header/doc</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:TemplateData_header/doc&amp;diff=121"/>
		<updated>2023-06-07T22:35:26Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the necessary documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&amp;gt;&lt;br /&gt;
{{TemplateData header|editlinks=1|docpage=TemplateData header/doc}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;description&amp;quot;:  {&lt;br /&gt;
		&amp;quot;en&amp;quot;: &amp;quot;Inserts a brief header for the template data section.&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;,&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;Template name&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;description&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;Used to display a name for the template other than the default, which is {{BASEPAGENAME}}.&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: false&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;noheader&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;No header&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;description&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;Assigning any value to this parameter will cause the template to omit the first sentence of the header text.&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: false&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;editlinks&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;Edit Links?&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;description&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;Whether to show {{Navbar}} editlinks on pages that transclude the TemplateData&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
			&amp;quot;autovalue&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;docpage&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;Doc Page&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;description&amp;quot;: {&lt;br /&gt;
				&amp;quot;en&amp;quot;: &amp;quot;The name of the current page, used for {{Navbar}} edit links&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;{{BASEPAGENAME}}/doc&amp;quot;,&lt;br /&gt;
			&amp;quot;autovalue&amp;quot;: &amp;quot;{{subst:PAGENAME}}&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-template-name&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;noheader&amp;quot;,&lt;br /&gt;
		&amp;quot;editlinks&amp;quot;,&lt;br /&gt;
		&amp;quot;docpage&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Template documentation]]&lt;br /&gt;
[[Category:TemplateData documentation]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:TemplateData_header&amp;diff=120</id>
		<title>Template:TemplateData header</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:TemplateData_header&amp;diff=120"/>
		<updated>2023-06-07T22:34:57Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Enhance the functionality&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;{{#switch:&amp;lt;translate&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|=&lt;br /&gt;
&amp;lt;div class=&amp;quot;templatedata-header&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{yesno|{{{editlinks|}}}}}&amp;lt;!--&lt;br /&gt;
	--&amp;gt;|{{#ifexpr:&amp;lt;!--&lt;br /&gt;
		--&amp;gt;{{#if:{{{docpage|}}}&amp;lt;!--&lt;br /&gt;
			--&amp;gt;|{{#ifeq:{{FULLPAGENAME}}|{{transclude|{{{docpage}}}}}|0|1}}&amp;lt;!--&lt;br /&gt;
			--&amp;gt;|not{{IsDocSubpage|false=0}}&amp;lt;!--&lt;br /&gt;
		--&amp;gt;}}&amp;lt;!--&lt;br /&gt;
		--&amp;gt;|{{Navbar|{{{docpage|{{BASEPAGENAME}}/doc}}}|plain=1|brackets=1|style=float:{{dir|{{PAGELANGUAGE}}|left|right}};}}&amp;lt;!--&lt;br /&gt;
	--&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;}}&lt;br /&gt;
{{#if:{{{noheader|}}}||This is the [[Special:MyLanguage/Help:TemplateData|TemplateData]] documentation for this template used by [[Special:MyLanguage/VisualEditor|VisualEditor]] and other tools.}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;{{{1|{{BASEPAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;includeonly&amp;gt;{{#ifeq:{{SUBPAGENAME}}|sandbox|&amp;lt;!--&lt;br /&gt;
	--&amp;gt;|{{#if:{{IsDocSubpage|false=}}&amp;lt;!--&lt;br /&gt;
		--&amp;gt;|[[Category:TemplateData documentation]]&amp;lt;!--&lt;br /&gt;
		--&amp;gt;|[[Category:Templates using TemplateData]]&amp;lt;!--&lt;br /&gt;
	--&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
| #default=&lt;br /&gt;
}}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
{{Documentation|content=&lt;br /&gt;
&lt;br /&gt;
Inserts a brief header for the template data section. Adds the /doc subpage to [[:Category:TemplateData documentation]] and the template page to [[:Category:Templates using TemplateData]].&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
{{#tag:syntaxhighlight|&lt;br /&gt;
==TemplateData== or ==Parameters== or ==Usage==&lt;br /&gt;
{{((}}TemplateData header{{))}}&lt;br /&gt;
{{^(}}templatedata{{)^}}{&lt;br /&gt;
...&lt;br /&gt;
}{{^(}}/templatedata{{)^}}&lt;br /&gt;
|lang=html&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TemplateData header|Template name}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to display a name for the template other than the default, which is [[mw:Help:Magic_words#Variables|&amp;lt;nowiki&amp;gt;{{BASEPAGENAME}}&amp;lt;/nowiki&amp;gt;]].&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&lt;br /&gt;
{{TemplateData header|Template name}}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{TemplateData header|noheader=1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to omit the first sentence of the header text.&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&lt;br /&gt;
{{TemplateData header|noheader=1}}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
{{TemplateData header/doc}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;templatedata-header&amp;quot;&amp;gt;{{#if:{{{noheader|}}}|&amp;lt;!--&lt;br /&gt;
 noheader:&lt;br /&gt;
--&amp;gt;|&amp;lt;!--&lt;br /&gt;
 +header:&lt;br /&gt;
--&amp;gt;This is the {{#if:{{{nolink|}}}|&amp;lt;!--&lt;br /&gt;
  +header, nolink TD&lt;br /&gt;
  --&amp;gt;TemplateData|&amp;lt;!--&lt;br /&gt;
  +header,  +link [[TD]]; DEFAULT:&lt;br /&gt;
--&amp;gt;[[Wikipedia:TemplateData|TemplateData]]}}&amp;lt;!--&lt;br /&gt;
   e.o. #if:nolink; DEFAULT:&lt;br /&gt;
--&amp;gt; documentation for this template used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools.&amp;lt;!--&lt;br /&gt;
   e.o. #if:noheader&lt;br /&gt;
--&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TemplateData for {{{1|{{BASEPAGENAME}}}}}&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
 check parameters&lt;br /&gt;
--&amp;gt;{{#invoke:Check for unknown parameters|check&lt;br /&gt;
|unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}}&lt;br /&gt;
|template=Template:TemplateData header&lt;br /&gt;
|1 |nolink |noheader&lt;br /&gt;
|preview=&amp;lt;div class=&amp;quot;error&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;&amp;gt;Unknown parameter &#039;_VALUE_&#039; in [[Template:TemplateData header]].&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{template other|{{sandbox other||&lt;br /&gt;
[[Category:Templates using TemplateData]]&lt;br /&gt;
&lt;br /&gt;
}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Escape_template_list&amp;diff=119</id>
		<title>Template:Escape template list</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Escape_template_list&amp;diff=119"/>
		<updated>2023-06-07T22:29:04Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the new lt/gt wrappers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|+ Escape template list&lt;br /&gt;
|-&lt;br /&gt;
! Template call !! Output (delayed interpretation as wikitext)  !! HTML alternative&lt;br /&gt;
(never interpreted as wikitext) &lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tlc|!}} || {{#tag:nowiki|{{!}}}} || &amp;amp;amp;#124;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{=}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || {{#tag:nowiki|{{=}}}} || &amp;amp;amp;#61;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tl2|nowrap=1|((}} || {{#tag:nowiki|{{((}}}} || &amp;amp;amp;#123;&amp;amp;amp;#123;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tl2|nowrap=1|))}} || {{#tag:nowiki|{{))}}}} || &amp;amp;amp;#125;&amp;amp;amp;#125;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tl2|nowrap=1|^(}} || {{#tag:nowiki|{{^(}}}} || &amp;amp;amp;#60; or &amp;amp;amp;lt;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tl2|nowrap=1|)^}} || {{#tag:nowiki|{{)^}}}} || &amp;amp;amp;#62; or &amp;amp;amp;gt;&lt;br /&gt;
|}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:)%5E/doc&amp;diff=118</id>
		<title>Template:)^/doc</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:)%5E/doc&amp;diff=118"/>
		<updated>2023-06-07T22:28:36Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the necessary documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&amp;gt;&lt;br /&gt;
{{Auxiliary template common notice|entity=gt}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Bracket templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:%5E(/doc&amp;diff=117</id>
		<title>Template:^(/doc</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:%5E(/doc&amp;diff=117"/>
		<updated>2023-06-07T22:28:34Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the necessary documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&amp;gt;&lt;br /&gt;
{{Auxiliary template common notice|entity=lt}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Bracket templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Auxiliary_template_common_notice&amp;diff=116</id>
		<title>Template:Auxiliary template common notice</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Auxiliary_template_common_notice&amp;diff=116"/>
		<updated>2023-06-07T22:27:56Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: (Hopefully) Fix a bug with the Wikipedia link for manual character links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;Use this template to produce the character(s) &amp;quot;{{tmpl|0=&amp;lt;includeonly&amp;gt;{{#tag:nowiki|{{ {{BASEPAGENAME}} }}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{small|1=[&#039;&#039;$1&#039;&#039;]}}&amp;lt;/noinclude&amp;gt;|character(s) appear here}}&amp;quot; as ordinary text rather than as part of a link (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[&amp;amp;nbsp;]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), [[mw:Help:Transclusion|transclusion]] (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{&amp;amp;nbsp;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), variable (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{{&amp;amp;nbsp;}}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), etc.&amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{#if:{{{entity|}}} |&amp;lt;br/&amp;gt;The [[wikipedia:Character encodings in HTML#Character references|HTML character code]] &amp;quot;&amp;lt;code&amp;gt;&amp;amp;amp;{{{entity}}};&amp;lt;/code&amp;gt;&amp;quot; may also be used to produce the same result.}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Similar templates ==&lt;br /&gt;
&lt;br /&gt;
{{Escape template list}}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:)%5E&amp;diff=115</id>
		<title>Template:)^</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:)%5E&amp;diff=115"/>
		<updated>2023-06-07T22:25:39Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the gt wrapper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&amp;gt;&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:%5E(&amp;diff=114</id>
		<title>Template:^(</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:%5E(&amp;diff=114"/>
		<updated>2023-06-07T22:25:30Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the lt wrapper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&amp;lt;&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:))/doc&amp;diff=113</id>
		<title>Template:))/doc</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:))/doc&amp;diff=113"/>
		<updated>2023-06-07T22:00:25Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the necessary documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Auxiliary template common notice}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Bracket templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:((/doc&amp;diff=112</id>
		<title>Template:((/doc</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:((/doc&amp;diff=112"/>
		<updated>2023-06-07T22:00:19Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the necessary documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Auxiliary template common notice}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Bracket templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Auxiliary_template_common_notice&amp;diff=111</id>
		<title>Template:Auxiliary template common notice</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Auxiliary_template_common_notice&amp;diff=111"/>
		<updated>2023-06-07T21:59:13Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: (Hopefully) fix a CRITICAL BUG!!!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;Use this template to produce the character(s) &amp;quot;{{tmpl|0=&amp;lt;includeonly&amp;gt;{{#tag:nowiki|{{ {{BASEPAGENAME}} }}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{small|1=[&#039;&#039;$1&#039;&#039;]}}&amp;lt;/noinclude&amp;gt;|character(s) appear here}}&amp;quot; as ordinary text rather than as part of a link (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[&amp;amp;nbsp;]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), [[mw:Help:Transclusion|transclusion]] (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{&amp;amp;nbsp;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), variable (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{{&amp;amp;nbsp;}}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), etc.&amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{#if:{{{entity|}}} |&amp;lt;br/&amp;gt;The [[:en:Character encodings in HTML#Character references|HTML character code]] &amp;quot;&amp;lt;code&amp;gt;&amp;amp;amp;{{{entity}}};&amp;lt;/code&amp;gt;&amp;quot; may also be used to produce the same result.}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Similar templates ==&lt;br /&gt;
&lt;br /&gt;
{{Escape template list}}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Escape_template_list&amp;diff=110</id>
		<title>Template:Escape template list</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Escape_template_list&amp;diff=110"/>
		<updated>2023-06-07T21:58:53Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: (Hopefully) fix a CRITICAL BUG!!!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|+ Escape template list&lt;br /&gt;
|-&lt;br /&gt;
! Template call !! Output (delayed interpretation as wikitext)  !! HTML alternative&lt;br /&gt;
(never interpreted as wikitext) &lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tlc|!}} || {{#tag:nowiki|{{!}}}} || &amp;amp;amp;#124;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tlc|=}} || {{#tag:nowiki|{{=}}}} || &amp;amp;amp;#61;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tl2|nowrap=1|((}} || {{#tag:nowiki|{{((}}}} || &amp;amp;amp;#123;&amp;amp;amp;#123;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tl2|nowrap=1|))}} || {{#tag:nowiki|{{))}}}} || &amp;amp;amp;#125;&amp;amp;amp;#125;&lt;br /&gt;
|}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Auxiliary_template_common_notice&amp;diff=109</id>
		<title>Template:Auxiliary template common notice</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Auxiliary_template_common_notice&amp;diff=109"/>
		<updated>2023-06-07T21:53:01Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Reimplement MW&amp;#039;s auxiliary template notice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Use this template to produce the character(s) &amp;quot;{{tmpl|0=&amp;lt;includeonly&amp;gt;{{#tag:nowiki|{{ {{BASEPAGENAME}} }}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{small|1=[&#039;&#039;$1&#039;&#039;]}}&amp;lt;/noinclude&amp;gt;|character(s) appear here}}&amp;quot; as ordinary text rather than as part of a link (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[&amp;amp;nbsp;]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), [[mw:Help:Transclusion|transclusion]] (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{&amp;amp;nbsp;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), variable (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{{&amp;amp;nbsp;}}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), etc.&amp;lt;!--&lt;br /&gt;
 --&amp;gt;{{#if:{{{entity|}}} |&amp;lt;br/&amp;gt;The [[:en:Character encodings in HTML#Character references|HTML character code]] &amp;quot;&amp;lt;code&amp;gt;&amp;amp;amp;{{{entity}}};&amp;lt;/code&amp;gt;&amp;quot; may also be used to produce the same result.}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Similar templates ==&lt;br /&gt;
&lt;br /&gt;
{{Escape template list}}&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Small&amp;diff=108</id>
		<title>Template:Small</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Small&amp;diff=108"/>
		<updated>2023-06-07T20:09:00Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the text smallifier&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:85%;&amp;quot;&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;includeonly&amp;gt;{{SAFESUBST:#if:{{{1|}}}||[[Category:Pages using small with an empty input parameter]]}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&amp;lt;!--Categories and interwikis go in the /doc sub-page.--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Tmpl&amp;diff=107</id>
		<title>Template:Tmpl</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Tmpl&amp;diff=107"/>
		<updated>2023-06-07T20:08:06Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add a simple inline template renderer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#invoke:Tmpl|renderTmpl}}&amp;lt;/includeonly&amp;gt;&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Module:Tmpl&amp;diff=106</id>
		<title>Module:Tmpl</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Module:Tmpl&amp;diff=106"/>
		<updated>2023-06-07T20:07:37Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the tmpl helper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This is a helper module for {{tmpl}}&lt;br /&gt;
require(&#039;strict&#039;)&lt;br /&gt;
&lt;br /&gt;
-- The trailing `[^0-9]?` ensures that `$10` doesn&#039;t potentially change&lt;br /&gt;
-- from being treated as `${1}0` to being treated as `${10}`&lt;br /&gt;
-- if the number of supported parameters is ever expanded:&lt;br /&gt;
local PATTERN = &amp;quot;%$([1-9])[^0-9]?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local this = {}&lt;br /&gt;
&lt;br /&gt;
function this.renderTmpl(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local pargs = (frame:getParent() or {}).args&lt;br /&gt;
	local input = pargs[0] or &#039;&#039;&lt;br /&gt;
	local result = {}&lt;br /&gt;
&lt;br /&gt;
	local prevPos = 1&lt;br /&gt;
	do&lt;br /&gt;
		local startPos, _, k&lt;br /&gt;
		while true do&lt;br /&gt;
			startPos, _, k = string.find(input, PATTERN, prevPos)&lt;br /&gt;
			if (not startPos) then break end&lt;br /&gt;
			table.insert(result, string.sub(input, prevPos, startPos - 1))&lt;br /&gt;
&lt;br /&gt;
			local n = tonumber(k)&lt;br /&gt;
			local r = pargs[n]&lt;br /&gt;
			if (r) then&lt;br /&gt;
				table.insert(result, r)&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(result, &#039;$&#039; .. n)&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			prevPos = startPos + #k + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.insert(result, string.sub(input, prevPos))&lt;br /&gt;
	return table.concat(result)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return this&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Escape_template_list/doc&amp;diff=105</id>
		<title>Template:Escape template list/doc</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Escape_template_list/doc&amp;diff=105"/>
		<updated>2023-06-07T20:03:35Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the necessary documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --&amp;gt;&lt;br /&gt;
{{TemplateData header}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;A list of templates (and magic words) used to escape wikitext markup from initial processing.&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Documentation shared content templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Escape_template_list&amp;diff=104</id>
		<title>Template:Escape template list</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Escape_template_list&amp;diff=104"/>
		<updated>2023-06-07T20:02:32Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add a list of ~~hacks~~ escape templates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|+ Escape template list&lt;br /&gt;
|-&lt;br /&gt;
! Template call !! Output (delayed interpretation as wikitext)  !! HTML alternative&lt;br /&gt;
(never interpreted as wikitext) &lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tlc|!}} || {{#tag:nowiki|{{!}}}} || &amp;amp;amp;#124;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tlc|=}} || {{#tag:nowiki|{{=}}}} || &amp;amp;amp;#61;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tl2|nowrap=1|((}} || {{#tag:nowiki|{{((}}}} || &amp;amp;amp;#123;&amp;amp;amp;#123;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{tl2|nowrap=1|))}} || {{#tag:nowiki|{{))}}}} || &amp;amp;amp;#125;&amp;amp;amp;#125;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Tlc&amp;diff=103</id>
		<title>Template:Tlc</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Tlc&amp;diff=103"/>
		<updated>2023-06-07T19:58:47Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: I am the anti link generator&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;templatestyles src=&amp;quot;Template:Nowrap/styles.css&amp;quot;/&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;code class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{((}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;noinclude&amp;gt;tlc{{!}}...&amp;lt;/noinclude&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{2|x}}}|{{{2|}}}| {{!}}{{{2}}} | }}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{3|x}}}|{{{3|}}}| {{!}}{{{3}}} | }}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{4|x}}}|{{{4|}}}| {{!}}{{{4}}} | }}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{5|x}}}|{{{5|}}}| {{!}}{{{5}}} | }}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{6|x}}}|{{{6|}}}| {{!}}{{{6}}} | }}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{7|x}}}|{{{7|}}}| {{!}}{{{7}}} | }}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{8|x}}}|{{{8|}}}| {{!}}{{{8}}} | }}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#ifeq:{{{9|x}}}|{{{9|}}}| {{!}}{{{9}}} | }}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{))}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Tlg&amp;diff=102</id>
		<title>Template:Tlg</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Tlg&amp;diff=102"/>
		<updated>2023-06-07T19:56:23Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add a template linking wrapper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;#invoke:Template link general|main}}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Module:Template_link_general&amp;diff=101</id>
		<title>Module:Template link general</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Module:Template_link_general&amp;diff=101"/>
		<updated>2023-06-07T19:55:53Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add a general template linking module&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This implements [[Template:Tlg]]&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
local cfg = mw.loadData(&#039;Module:Template link general/config&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Is a string non-empty?&lt;br /&gt;
local function _ne(s) &lt;br /&gt;
	return s ~= nil and s ~= &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local nw = mw.text.nowiki&lt;br /&gt;
&lt;br /&gt;
local function addTemplate(s)&lt;br /&gt;
	local i, _ = s:find(&#039;:&#039;, 1, true)&lt;br /&gt;
	if i == nil then&lt;br /&gt;
		return &#039;Template:&#039; .. s&lt;br /&gt;
	end&lt;br /&gt;
	local ns = s:sub(1, i - 1)&lt;br /&gt;
	if ns == &#039;&#039; or mw.site.namespaces[ns] then&lt;br /&gt;
		return s&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;Template:&#039; .. s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function trimTemplate(s)&lt;br /&gt;
	local needle = &#039;template:&#039;&lt;br /&gt;
	if s:sub(1, needle:len()):lower() == needle then&lt;br /&gt;
		return s:sub(needle:len() + 1)	&lt;br /&gt;
	else&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function linkTitle(args)&lt;br /&gt;
	if yesno(args.nolink) then&lt;br /&gt;
		return args[1]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local titleObj&lt;br /&gt;
	local titlePart = &#039;[[&#039;&lt;br /&gt;
	if args[1] then&lt;br /&gt;
		-- This handles :Page and other NS&lt;br /&gt;
		titleObj = mw.title.new(args[1], &#039;Template&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		titleObj = mw.title.getCurrentTitle()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or&lt;br /&gt;
				addTemplate(args[1]))&lt;br /&gt;
&lt;br /&gt;
	local textPart = args.alttext&lt;br /&gt;
	if not _ne(textPart) then&lt;br /&gt;
		if titleObj ~= nil then&lt;br /&gt;
			textPart = titleObj:inNamespace(&amp;quot;Template&amp;quot;) and args[1] or titleObj.fullText&lt;br /&gt;
		else&lt;br /&gt;
			-- redlink&lt;br /&gt;
			textPart = args[1]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args.brace) then&lt;br /&gt;
		textPart = nw(&#039;{{&#039;) .. textPart .. nw(&#039;}}&#039;)&lt;br /&gt;
	elseif yesno(args.braceinside) then&lt;br /&gt;
		textPart = nw(&#039;{&#039;) .. textPart .. nw(&#039;}&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	titlePart = titlePart .. &#039;|&#039; .. textPart .. &#039;]]&#039;&lt;br /&gt;
	if yesno(args.braceinside) then&lt;br /&gt;
		titlePart = nw(&#039;{&#039;) .. titlePart .. nw(&#039;}&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return titlePart&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame, {&lt;br /&gt;
		trim = true,&lt;br /&gt;
		removeBlanks = false,&lt;br /&gt;
		wrappers = {&lt;br /&gt;
			&#039;Template:Tlg&#039;,&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- TemplateStyles&lt;br /&gt;
	local templateStyles = {&lt;br /&gt;
		mono   = false,&lt;br /&gt;
		nowrap = false,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local bold = yesno(args.bold) or yesno(args.boldlink) or yesno(args.boldname)&lt;br /&gt;
	local italic = yesno(args.italic) or yesno(args.italics)&lt;br /&gt;
	local dontBrace = yesno(args.brace) or yesno(args.braceinside)&lt;br /&gt;
	local code = yesno(args.code) or yesno(args.tt)&lt;br /&gt;
	local classes = {}&lt;br /&gt;
&lt;br /&gt;
	-- Build the link part&lt;br /&gt;
	local titlePart = linkTitle(args)&lt;br /&gt;
	if bold then titlePart = &amp;quot;&#039;&#039;&#039;&amp;quot; .. titlePart .. &amp;quot;&#039;&#039;&#039;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args.subst) then&lt;br /&gt;
		local substLink = cfg[&#039;subst-link&#039;]&lt;br /&gt;
		if _ne(substLink) and yesno(args[&#039;link subst&#039;]) then&lt;br /&gt;
			titlePart = &#039;[[&#039; .. substLink .. &#039;|subst]]:&#039; .. titlePart&lt;br /&gt;
		else&lt;br /&gt;
			titlePart = &#039;subst:&#039; .. titlePart&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args.nowrapname) then&lt;br /&gt;
		templateStyles.nowrap = true&lt;br /&gt;
		titlePart = &#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&#039; .. titlePart .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Build the arguments&lt;br /&gt;
	local textPart = &amp;quot;&amp;quot;&lt;br /&gt;
	local textPartBuffer = &amp;quot;&amp;quot;&lt;br /&gt;
	local i = 2&lt;br /&gt;
	while args[i] do&lt;br /&gt;
		local val = args[i]&lt;br /&gt;
		textPartBuffer = textPartBuffer .. &#039;&amp;amp;#124;&#039;&lt;br /&gt;
		if val ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			if yesno(args.nowiki) then&lt;br /&gt;
				-- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will&lt;br /&gt;
				-- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up&lt;br /&gt;
				val = nw(mw.text.unstripNoWiki(val))&lt;br /&gt;
			end&lt;br /&gt;
			if italic then val = &#039;&amp;lt;span style=&amp;quot;font-style:italic;&amp;quot;&amp;gt;&#039; .. val .. &#039;&amp;lt;/span&amp;gt;&#039; end&lt;br /&gt;
			textPart = textPart .. textPartBuffer .. val&lt;br /&gt;
			textPartBuffer = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		i = i+1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tagName = nil&lt;br /&gt;
	local css = nil&lt;br /&gt;
&lt;br /&gt;
	-- final wrap&lt;br /&gt;
	local ret = titlePart .. textPart&lt;br /&gt;
	if not dontBrace then ret = nw(&#039;{{&#039;) .. ret .. nw(&#039;}}&#039;) end&lt;br /&gt;
	if yesno(args.a) then ret = nw(&#039;*&#039;) .. &#039;&amp;amp;nbsp;&#039; .. ret end&lt;br /&gt;
	if yesno(args.kbd) then&lt;br /&gt;
		tagName = &#039;kbd&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args.mono) then&lt;br /&gt;
		templateStyles.mono = true&lt;br /&gt;
		table.insert(classes, &#039;monospaced&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local plaincode = yesno(args.plaincode) and not code&lt;br /&gt;
	if code or plaincode then&lt;br /&gt;
		if tagName then&lt;br /&gt;
			-- kbd == true &amp;amp;&amp;amp; code == true&lt;br /&gt;
			ret = (&#039;&amp;lt;%s&amp;gt;%s&amp;lt;/%s&amp;gt;&#039;):format(tagName, ret, tagName)&lt;br /&gt;
		end&lt;br /&gt;
		tagName = &#039;code&#039;&lt;br /&gt;
		if plaincode then&lt;br /&gt;
			css = {&lt;br /&gt;
				background = &#039;transparent&#039;,&lt;br /&gt;
				border     = &#039;none&#039;,&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args.nowrap) then&lt;br /&gt;
		templateStyles.nowrap = true&lt;br /&gt;
		table.insert(classes, &#039;nowrap&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if tagName or #classes &amp;gt; 0 or css then&lt;br /&gt;
		local span = mw.html.create(tagName or &#039;span&#039;)&lt;br /&gt;
			:addClass(table.concat(classes, &#039; &#039;))&lt;br /&gt;
			:wikitext(ret)&lt;br /&gt;
&lt;br /&gt;
		if css then&lt;br /&gt;
			span:css(css)&lt;br /&gt;
		end&lt;br /&gt;
		ret = tostring(span:allDone())&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ts = {}&lt;br /&gt;
	if templateStyles.mono then&lt;br /&gt;
		table.insert(ts, mw.getCurrentFrame():extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;,&lt;br /&gt;
			args = { src = &#039;Template:Mono/styles.css&#039; }&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if templateStyles.nowrap then&lt;br /&gt;
		table.insert(ts, mw.getCurrentFrame():extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;,&lt;br /&gt;
			args = { src = &#039;Template:Nowrap/styles.css&#039; }&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args.debug) then&lt;br /&gt;
		ret = ret .. &#039;\n&amp;lt;pre&amp;gt;&#039; .. mw.text.encode(mw.dumpObject(args)) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(ts) .. ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Module:Template_link_general/config&amp;diff=100</id>
		<title>Module:Template link general/config</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Module:Template_link_general/config&amp;diff=100"/>
		<updated>2023-06-07T19:55:04Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add the general template linking config&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local cfg = {}; -- Don’t touch this line.&lt;br /&gt;
&lt;br /&gt;
-- The link for the “subst:” prefix when the “link subst” parameter is truthy.&lt;br /&gt;
-- Set to “nil” to disable  the “link subst” parameter.&lt;br /&gt;
cfg[&amp;quot;subst-link&amp;quot;] = &amp;quot;mw:Help:Substitution&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
return cfg; -- Don’t touch this line.&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Tl2&amp;diff=99</id>
		<title>Template:Tl2</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Tl2&amp;diff=99"/>
		<updated>2023-06-07T19:45:14Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Add another template linking template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&amp;lt;!-- Subst of {{Tl2}} follows --&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{{{{|safesubst:}}}#if:{{{{{|safesubst:}}}yesno|{{{nowrap|}}}}}|&amp;lt;templatestyles src=&amp;quot;Template:Nowrap/styles.css&amp;quot; /&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;}}&amp;lt;code {{{{{|safesubst:}}}#if:{{{{{|safesubst:}}}yesno|{{{nowrap|}}}}}|class=&amp;quot;nowrap&amp;quot;}}&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;[[:{{ {{{|safesubst:}}}#if: {{{sister|}}} | {{{sister}}}: }}{{ {{{|safesubst:}}}#if: {{{lang|}}} | {{{lang}}}: }}{{ {{{|safesubst:}}}ns:Template }}:{{{1}}}|{{{1}}}]]{{ {{{|safesubst:}}}#if: {{{2|}}} | &amp;amp;#124;{{{2}}} }}{{ {{{|safesubst:}}}#if: {{{3|}}} | &amp;amp;#124;{{{3}}} }}{{ {{{|safesubst:}}}#if: {{{4|}}} | &amp;amp;#124;{{{4}}} }}{{ {{{|safesubst:}}}#if: {{{5|}}} | &amp;amp;#124;{{{5}}} }}&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;!-- Subst of {{Tl2}} ends --&amp;gt;&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
	<entry>
		<id>https://wiki.fyralabs.com/index.php?title=Template:Copy_edit&amp;diff=97</id>
		<title>Template:Copy edit</title>
		<link rel="alternate" type="text/html" href="https://wiki.fyralabs.com/index.php?title=Template:Copy_edit&amp;diff=97"/>
		<updated>2023-06-07T14:54:34Z</updated>

		<summary type="html">&lt;p&gt;Alyxia: Oops, we&amp;#039;re not Wikipedia&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SAFESUBST:&amp;lt;noinclude /&amp;gt;#invoke:Unsubst||date=__DATE__ |$B=&lt;br /&gt;
{{ambox&lt;br /&gt;
| name  = Copy edit&lt;br /&gt;
| type  = style&lt;br /&gt;
| class = ambox-Copy_edit&lt;br /&gt;
| image = [[File:Acap.svg|40x40px|alt=|link=]]&lt;br /&gt;
| issue = This {{{1|article}}} &#039;&#039;&#039;may require [[Wikipedia:Basic copyediting|copy editing]] for {{{for|{{{reason|grammar, style, cohesion, tone, or spelling}}}}}}&#039;&#039;&#039;.&lt;br /&gt;
| fix   = You can assist by [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} editing it].&lt;br /&gt;
| removalnotice = yes&lt;br /&gt;
| cat   = Articles needing copy edit&lt;br /&gt;
| date  = {{{date|}}}&lt;br /&gt;
| all   = All articles needing copy edit&lt;br /&gt;
}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alyxia</name></author>
	</entry>
</feed>