<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mirror.consumerrights.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ConsciousCode</id>
	<title>Consumer Rights Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://mirror.consumerrights.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ConsciousCode"/>
	<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/w/Special:Contributions/ConsciousCode"/>
	<updated>2026-05-19T21:44:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=List_of_companies&amp;diff=21664</id>
		<title>List of companies</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=List_of_companies&amp;diff=21664"/>
		<updated>2025-08-22T04:26:13Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: /* O */ Added OpenAI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:List of Companies}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{Hatnote|This is a dynamic list and may never be able to satisfy particular standards for completeness. You can help by adding missing items.}}&lt;br /&gt;
&lt;br /&gt;
Below is a list of companies that have dedicated articles in the Consumer Rights Wiki .&lt;br /&gt;
&lt;br /&gt;
===A===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ AT&amp;amp;T ]] &lt;br /&gt;
&lt;br /&gt;
* [[ AVM Software ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Acer ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Activision Blizzard ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Adobe ]] &lt;br /&gt;
&lt;br /&gt;
* [[ AirAsia ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Allstate ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Ally Financial ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Ally Invest Securities ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Amazon ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Ancestry.com ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Anova Culinary ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Apple ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Arlo ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Asus|ASUS ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Autodesk ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Axis ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===B===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ Balena ]]&lt;br /&gt;
&lt;br /&gt;
* [[ BMW ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Brother Industries Ltd. ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Bambu Lab ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Best Buy ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Belkin ]]&lt;br /&gt;
&lt;br /&gt;
* [[ BetterHelp ]] &lt;br /&gt;
&lt;br /&gt;
* [[ BowFlex, Inc. ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Brilliant ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===C===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ CARIAD ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Canon ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Capital One ]]&lt;br /&gt;
&lt;br /&gt;
* [[ Cerberus ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Chamberlain Group ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Charles Schwab ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Chase Bank ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Cloudflare ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Coffee Meets Bagel ]] &lt;br /&gt;
&lt;br /&gt;
* [[ CompTIA ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Cox Communications ]]&lt;br /&gt;
&lt;br /&gt;
* [[ Cricut ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===D===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
&lt;br /&gt;
* [[ DAZN ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Deep Cycle Systems ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Discord ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Disney ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Duolingo ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Dymo ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Dyson ]] &lt;br /&gt;
&lt;br /&gt;
* [[ DJI ]]{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===E===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ Ecoflow ]] &lt;br /&gt;
&lt;br /&gt;
* [[ EduVULCAN ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Electronic Arts ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Epic Games, Inc. ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Eufy ]] &lt;br /&gt;
&lt;br /&gt;
* [[ EVGA ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===F===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ FUTO ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Fiio ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Ford ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Future Motion ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Frontier Airlines ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===G===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ GameStop ]] &lt;br /&gt;
&lt;br /&gt;
* [[ General Motors ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Glasswire ]] &lt;br /&gt;
&lt;br /&gt;
* [[ GoGuardian ]]&lt;br /&gt;
&lt;br /&gt;
* [[ Google ]] &lt;br /&gt;
&lt;br /&gt;
* [[ GoPro ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Groupon ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Guardzilla ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===H===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ HP Inc. ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Happiest Baby ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Home Connect ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Honda ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Hyundai ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Humble Bundle ]]{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===I===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ IFTTT ]] &lt;br /&gt;
&lt;br /&gt;
* [[ IKEA ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Intel ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===J===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ John Deere ]] &lt;br /&gt;
* [[ Jeep ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===K===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ Kroger Grocery store electronic shelf labels &amp;amp; facial recognition|Kroger ]]&lt;br /&gt;
* [[ Keurig ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===L===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ LG ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Lebara ]]&lt;br /&gt;
&lt;br /&gt;
* [[ Lenovo ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Leo Express ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Lieferando ]] &lt;br /&gt;
&lt;br /&gt;
* [[ LinkedIn ]] &lt;br /&gt;
&lt;br /&gt;
* [[ LiveRamp ]]{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===M===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ Magic Leap ]] &lt;br /&gt;
&lt;br /&gt;
* [[ MakerBot ]] &lt;br /&gt;
&lt;br /&gt;
* [[ ManyCam ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Meta ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Microsoft ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Miele ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Monoprice ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Motorola ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Movies Anywhere ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Mozilla ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===N===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ Nanoleaf ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Netflix, Inc. ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Nike ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Nintendo ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Nissan ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Nixplay ]]&lt;br /&gt;
&lt;br /&gt;
* [[ NordVPN ]] &lt;br /&gt;
&lt;br /&gt;
* [[ NZXT ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Newag ]] {{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===O===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ Optimum ]]&lt;br /&gt;
* [[ Optus ]]&lt;br /&gt;
* [[ OpenAI ]]{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===P===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ PayPal ]] &lt;br /&gt;
&lt;br /&gt;
* [[ PayPal Honey ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Peloton ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Photobucket ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Pitboss Grills ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Pluralsight ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Plutus ]]&lt;br /&gt;
&lt;br /&gt;
* [[ Protonmail ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Purism ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Pinterest ]]{{Div col end}}&lt;br /&gt;
&lt;br /&gt;
*[https://wiki.rossmanngroup.com/wiki/Paragon_NTFS_software_license_invalidation Paragon Software]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Q===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ Qantas ]]&lt;br /&gt;
* [[ Quidd ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===R===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ Raven ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Ring ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Redbox ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Reddit ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Robinhood Financial ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Roblox ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Roborock ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Roku, Inc. ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Rovio ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===S===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ Samsung ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Seagate ]]&lt;br /&gt;
&lt;br /&gt;
* [[ Seattle Avionics ]] &lt;br /&gt;
&lt;br /&gt;
* [[ SecuROM ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Shopee ]] &lt;br /&gt;
&lt;br /&gt;
* [[ SiriusXM ]]&lt;br /&gt;
&lt;br /&gt;
* [[ Smartwool ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Sonos ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Sony ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Spectrum ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Spotify ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Starlink ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Steam ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Synology ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===T===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ T-Mobile ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Tado ]]&lt;br /&gt;
&lt;br /&gt;
* [[ TD Ameritrade ]] &lt;br /&gt;
&lt;br /&gt;
* [[ TP-Link ]] &lt;br /&gt;
&lt;br /&gt;
* [[ User testing for mandatory paid subscription into Tado Smart Thermostat app|Tado GmbH ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Take Two ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Team 17 ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Telstra ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Telly ]]&lt;br /&gt;
&lt;br /&gt;
* [[ Terumo Cardiovascular ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Tesla, Inc. ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Thermaltake ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Ticketmaster Entertainment, LLC ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Tinder ]] &lt;br /&gt;
&lt;br /&gt;
* [[ TRMNL ]]&lt;br /&gt;
&lt;br /&gt;
* [[ Toyota ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Tuya Inc. ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Twitch ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Twitter ]]&lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===U===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ Uber ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Ubisoft ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Urban Air Adventure Park ]]&lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===V===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ Valve ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Verisk Analytics, Inc. ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Virgin Media ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Volkswagen ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Vultr ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Venmo ]]&lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===W===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ Walmart ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Wink ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Winston-Salem Journal ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Wondershare ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Wyze ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===X===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ X Corp ]] &lt;br /&gt;
&lt;br /&gt;
* [[ Xiaomi ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Y===&lt;br /&gt;
{{Div col|colwidth=20em|gap=2em}}&lt;br /&gt;
* [[ YouTube ]] &lt;br /&gt;
{{Div col end}}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Z===&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Companies]]&lt;br /&gt;
[[Category:Organizations]]&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=User_talk:ConsciousCode&amp;diff=21663</id>
		<title>User talk:ConsciousCode</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=User_talk:ConsciousCode&amp;diff=21663"/>
		<updated>2025-08-22T04:19:27Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: /* Welcome! */ Reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Welcome!==&lt;br /&gt;
&lt;br /&gt;
Apologies for not catching you earlier (I was asleep), but you&#039;ve been extremely busy! Judging from the templates you&#039;ve been bringing across, I assume you&#039;re a Wikipedia user and are familiar with how they&#039;re all used over there? It would be good to get your input on how and where you think it&#039;d be best to integrate them into the CRW.&lt;br /&gt;
&lt;br /&gt;
In any case, I hope to see you around! The wiki is still very young so if you see ways in which it could be improved please do let me or the other admins know. We do intend to set up proper discussion boards soon, rather than relying on the Discord like we have been doing up until now. [[User:Keith|Keith]] ([[User talk:Keith|talk]]) 07:35, 13 August 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
:P.S. I&#039;ve confirmed you - sorry for all the CAPTCHAs you had to fill out! [[User:Keith|Keith]] ([[User talk:Keith|talk]]) 07:35, 13 August 2025 (UTC)&lt;br /&gt;
::Ah yeah, I just ran my own Mediawiki for a while and remembered how annoying it was to want to use Wikipedia&#039;s tools and templates only to get big red links instead. I don&#039;t really know what I&#039;m doing either, I&#039;m just vaguely familiar with the software and ergonomics lol [[User:ConsciousCode|ConsciousCode]] ([[User talk:ConsciousCode|talk]]) 04:19, 22 August 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Category:Companies_using_forced_arbitration_clauses&amp;diff=18800</id>
		<title>Category:Companies using forced arbitration clauses</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Category:Companies_using_forced_arbitration_clauses&amp;diff=18800"/>
		<updated>2025-08-13T06:59:19Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are companies which have one or more products which use [[forced arbitration clause]]s in their EULAs or other legal documents.&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=EBay&amp;diff=18798</id>
		<title>EBay</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=EBay&amp;diff=18798"/>
		<updated>2025-08-13T06:56:04Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: /* References */ Adding Category:Companies Using Forced Arbitration Clauses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{InfoboxCompany&lt;br /&gt;
| Name = eBay Inc.&lt;br /&gt;
| Type = Public&lt;br /&gt;
| Founded = 1995&lt;br /&gt;
| Industry = E-commerce&lt;br /&gt;
| Official Website = http://ebay.com/&lt;br /&gt;
| Logo = EBay logo.svg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[wikipedia:EBay|eBay Inc.]]&#039;&#039;&#039; (formerly known as AuctionWeb, 1995–1997) is an American multinational e-commerce corporation based in San Jose, California, that enables users to purchase or look at products via retail sales on websites and online marketplaces in 190 markets around the globe. Sales happen either via online auctions or &amp;quot;buy it now&amp;quot; immediate purchases, and the firm makes commissions from sales made by sellers.&lt;br /&gt;
&lt;br /&gt;
==Anti-consumer practices==&lt;br /&gt;
&lt;br /&gt;
===User Agreement Update to Arbitration as of 4/17/25===&lt;br /&gt;
As of 4/17/25, eBay has changed its &amp;quot;Agreement to [[Forced arbitration|Arbitrate]]&amp;quot; section in the User Agreement:&amp;lt;ref&amp;gt;{{Cite web |title=User Agreement |url=https://www.ebay.com/help/policies/member-behaviour-policies/user-agreement?id=4259 |url-status=live |access-date=19 Apr 2025 |website=[[eBay]]}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite web |last=Morton |first=Liz |date=17 Apr 2025 |title=eBay User Agreement Update May 2025: New Arbitration Terms &amp;amp; Limits On Lawsuits |url=https://www.valueaddedresource.net/ebay-user-agreement-may-2025-arbitration/ |url-status=live |archive-url=https://web.archive.org/web/20250418193349/https://www.valueaddedresource.net/ebay-user-agreement-may-2025-arbitration/ |archive-date=18 Apr 2025 |access-date=19 Apr 2025 |website=Value Added Resource}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*eBay users are required to waive their right to a jury trial for disputes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
 If you do not opt out: (1) you will only be permitted to pursue claims against us or related third parties on an individual basis, not as a plaintiff or class member in any class or representative action or proceeding; (2) you will only be permitted to seek relief (including monetary, injunctive, and declaratory relief) on an individual basis; and (3) you are waiving your right to pursue disputes or claims and seek relief in a court of law and to have a jury trial.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*A new section regarding this has been added:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
    Waiver of Jury Trial&lt;br /&gt;
&lt;br /&gt;
    YOU AND EBAY HEREBY WAIVE ANY CONSTITUTIONAL AND STATUTORY RIGHTS TO SUE IN COURT AND HAVE A TRIAL IN FRONT OF A JUDGE OR A JURY. You and eBay are instead electing that all Disputes shall be resolved by arbitration under this Agreement to Arbitrate, except as specified in Section 19.B (&amp;quot;Agreement to Arbitrate&amp;quot;).&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*eBay has also added a clause requiring users to submit to informal dispute resolution, a 45 day period before arbitration can even begin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
    If a Dispute arises between you and eBay, eBay is committed to working with you to reach a prompt, low‐cost and mutually reasonable resolution.&lt;br /&gt;
&lt;br /&gt;
    You and eBay agree to participate in good faith informal efforts to resolve Disputes before starting an arbitration or initiating an action in small claims court (&amp;quot;Informal Dispute Resolution&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
    To initiate Informal Dispute Resolution, a party must give notice to the other party in writing in a valid Notice of Dispute (&amp;quot;Notice&amp;quot;), which may be downloaded at this link. Such Notice to eBay should be sent by email to DisputeNotice@eBay.com or regular mail to our offices located at 583 W. eBay Way, Draper, UT 84020.&lt;br /&gt;
&lt;br /&gt;
    eBay will send any Notice to you to the physical address we have on file associated with your eBay account; it is your responsibility to keep your physical address up to date.&lt;br /&gt;
&lt;br /&gt;
    To be valid, you must personally sign the Notice and complete all information on the Notice form, including a description of the claims you are asserting, the specific relief sought, and the user name, email address and phone number associated with your account.&lt;br /&gt;
&lt;br /&gt;
    The Informal Dispute Resolution process lasts 45 days and is a mandatory precondition to commencing arbitration. The statute of limitations and any filing deadlines shall be tolled while the parties engage in Informal Dispute Resolution.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*eBay has also added a new section on confidentiality which states that all materials exchanged during arbitration are not to be shared outside of the parties’ attorneys, accountants, or business advisors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
    Subject to the NAM Rules, the arbitrator may direct a limited and reasonable exchange of information between the parties, consistent with the expedited nature of the arbitration.&lt;br /&gt;
&lt;br /&gt;
    You and eBay agree that all materials and documents exchanged during the arbitration proceedings shall be kept confidential and shall not be shared with anyone except the parties’ attorneys, accountants, or business advisors, and shall be subject to the condition that they agree to keep all materials and documents exchanged during the arbitration proceedings confidential.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Another new section on Fees and Costs introduces new terms which may disadvantage individual claimants and the introduction of &amp;quot;sanctions&amp;quot; for filing &amp;quot;frivolous&amp;quot; claims which may be effective in deterring users from seeking arbitration for even legitimate claims as it could carry the risk of being responsible for all arbitration and legal fees for both sides.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
    Payment of all filing, administration, and arbitrator fees will be governed by the applicable NAM fee schedules (the &amp;quot;Fee Schedules&amp;quot;), but may be reapportioned between the parties in accordance with this Agreement to Arbitrate, as follows:&lt;br /&gt;
&lt;br /&gt;
    if you complied with the Informal Dispute Resolution requirements in Section 1 of this Agreement and the value of the relief sought in the Dispute is $10,000 or less, at your request eBay will pay all filing, administration, and arbitrator fees associated with the arbitration.&lt;br /&gt;
&lt;br /&gt;
    The parties shall bear their own attorneys’ fees and costs in arbitration unless the arbitrator finds that either the substance of the Dispute or the relief sought in the Demand was frivolous or was brought for an improper purpose (as measured by the standards set forth in Federal Rule of Civil Procedure 11(b)).&lt;br /&gt;
&lt;br /&gt;
    To the extent, following a presentation on the merits, on its own motion or a party’s, and after affording a reasonable opportunity to respond, an arbitrator determines that a party who commenced arbitration did not bring its claim(s) consistent with counsel’s Certification and the standards set forth in Federal Rule of Civil Procedure 11(b), the arbitrator may, as part of its award, impose sanctions by ordering that the initiating party reimburse the responding party for all arbitration costs and arbitrators’ fees the responding party incurred under the Fee Schedule.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*eBay&#039;s new terms introduce Batch Arbitration, where similar individual demands are grouped together with a single arbiter assigned to review and make a decision for the entire batch at once. While eBay and NAM position Batch Arbitration as a way to increase the efficiency of the process, it&#039;s important to note that batching claims in this way significantly reduces transparency and visibility into the details of any specific individual claim:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
    To increase the efficiency of administration and resolution of arbitrations, you and eBay agree that in the event that there are 25 or more individual Demands of a substantially similar nature filed against eBay by or with the assistance of the same law firm, group of law firms, or organizations (&amp;quot;Claimant’s Counsel&amp;quot;), within a reasonably proximate period of time, for example, a 90 day period, NAM shall:&lt;br /&gt;
&lt;br /&gt;
        (1) administer the arbitration demands in batches of 100 Demands per batch (or, if between 25 and 99 individual Demands are filed, a single batch of all those Demands, and, to the extent there are less than 100 Demands remaining after the batching described above, a final batch consisting of the remaining Demands);&lt;br /&gt;
        (2) appoint one arbitrator for each batch; and&lt;br /&gt;
        (3) provide for the resolution of each batch on a consolidated basis with one set of filing and administrative fees due per batch, one procedural calendar, one hearing (if any) in a place to be selected by Claimant’s Counsel or, if Claimant’s Counsel does not have a preference, by the arbitrator, and one final award, which will provide for any and all relief to which the arbitrator determines each individual party is entitled (&amp;quot;Batch Arbitration&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
    NAM shall administer all batches concurrently, to the extent possible.&lt;br /&gt;
&lt;br /&gt;
    All parties agree that Demands are of a &amp;quot;substantially similar nature&amp;quot; if they arise out of or relate to the same event or factual scenario and raise the same or similar legal issue(s) and seek the same or similar relief.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The only way to opt out of this is through physical mail:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
    YOU CAN CHOOSE TO OPT OUT OF THIS AGREEMENT TO ARBITRATE (&amp;quot;OPT OUT&amp;quot;) BY MAILING US A WRITTEN OPT-OUT NOTICE (&amp;quot;OPT-OUT NOTICE&amp;quot;). THE OPT-OUT NOTICE MUST BE POSTMARKED NO LATER THAN THE EFFECTIVE DATE OF THE AMENDMENT OR 30 DAYS FROM THE DATE YOU FIRST ACCEPT THIS USER AGREEMENT.&lt;br /&gt;
&lt;br /&gt;
    YOU MUST MAIL THE OPT-OUT NOTICE TO EBAY INC., ATTN: LITIGATION DEPARTMENT, RE: OPT-OUT NOTICE, 583 WEST EBAY WAY, DRAPER, UT 84020.&lt;br /&gt;
&lt;br /&gt;
    For your convenience, we are providing an Opt-Out Notice form. You must complete, sign, and mail that to us to opt out of this Agreement to Arbitrate.&lt;br /&gt;
&lt;br /&gt;
    You must sign the Opt-Out Notice for it to be effective. Any Opt-Out Notice will be effective only if you send it yourself, on an individual basis, and opt-out notices from any third party purporting to act on your behalf will have no effect on your or eBay’s rights. This procedure is the only way you can opt out of this Agreement to Arbitrate.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ebay AI opt in by default ===&lt;br /&gt;
{{Main|Ebay AI opt in by default}}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Articles in need of additional work]]&lt;br /&gt;
[[Category:EBay]]&lt;br /&gt;
[[Category:Companies Using Forced Arbitration Clauses]]&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:R_to_redirect_template&amp;diff=18795</id>
		<title>Template:R to redirect template</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:R_to_redirect_template&amp;diff=18795"/>
		<updated>2025-08-13T06:47:36Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:R_to_redirect_template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{This is a redirect/rcat}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{Redirect template&lt;br /&gt;
  |id=R to redirect template&lt;br /&gt;
  |name=To a redirect category (rcat) template&lt;br /&gt;
  |from=an alias/shortcut (usually), or from a redirect that is the result of a page move/rename,&lt;br /&gt;
  |to=a redirect category ([[WP:RCAT|rcat]]) template&lt;br /&gt;
  |template category=Redirects to redirect templates&lt;br /&gt;
  |other category=Redirects to template namespace&lt;br /&gt;
  |printworthy=no&lt;br /&gt;
}}&amp;lt;includeonly&amp;gt;{{{category|[[Category:Redirects to redirect templates]]}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Place categories on /doc subpage; interwikis go to Wikidata. --&amp;gt;&lt;br /&gt;
{{Documentation}} &lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:R_from_high-use_template&amp;diff=18793</id>
		<title>Template:R from high-use template</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:R_from_high-use_template&amp;diff=18793"/>
		<updated>2025-08-13T06:47:02Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:R_from_high-use_template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{This is a redirect/rcat}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{Redirect template&lt;br /&gt;
  |id=R from high-use template&lt;br /&gt;
  |name=From a high-use template&lt;br /&gt;
  |from=a highly transcluded redirect to a template&lt;br /&gt;
  |info=**{{#invoke:High-use|text|risk|nobot=true}}&lt;br /&gt;
  |all category=Redirects from high-use templates&lt;br /&gt;
  |printworthy=no&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Place categories on /doc subpage; interwikis go to Wikidata. --&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Rcat_shell&amp;diff=18792</id>
		<title>Template:Rcat shell</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Rcat_shell&amp;diff=18792"/>
		<updated>2025-08-13T06:46:22Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Rcat_shell&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Redirect category shell]]&lt;br /&gt;
&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from high-use template}}&lt;br /&gt;
{{R to redirect template}}&lt;br /&gt;
{{R from template shortcut}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:R_from_shortcut&amp;diff=18791</id>
		<title>Template:R from shortcut</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:R_from_shortcut&amp;diff=18791"/>
		<updated>2025-08-13T06:45:51Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:R_from_shortcut&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Template:This is a redirect/rcat|from shortcut}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{#switch:{{#invoke:RedirectData|getRedirectToNamespace}}&lt;br /&gt;
|Template=&lt;br /&gt;
{{Redirect template&lt;br /&gt;
  |id=R from template shortcut&lt;br /&gt;
  |name=From a template shortcut&lt;br /&gt;
  |from=a [[Wikipedia:Shortcut|shortcut]] page name &#039;&#039;&#039;in &#039;&#039;any&#039;&#039; [[WP:namespace|namespace]]&#039;&#039;&#039;&lt;br /&gt;
  |to=a page in [[WP:template namespace|template namespace]]&lt;br /&gt;
  |info=**Shortcuts are [[wikilink]]ed on community pages, talk pages, and edit summaries, but not in [[wp:mainspace|mainspace]] articles. [[WP:Transclusion|Transclusions]] in mainspace are common and do not need to be &amp;quot;[[WP:NOTBROKEN|fixed]]&amp;quot;.&lt;br /&gt;
  |all category=Redirects from template shortcuts&lt;br /&gt;
  |printworthy=no&lt;br /&gt;
}}&lt;br /&gt;
|#default=&lt;br /&gt;
{{Redirect template&lt;br /&gt;
  |id=R from shortcut&lt;br /&gt;
  |name=From a shortcut&lt;br /&gt;
  |from=a [[Wikipedia:Shortcut|shortcut]] in any namespace&lt;br /&gt;
  |to=a page in any namespace{{#if:{{{of|}}}{{{for|}}}|. The referent of this shortcut is: {{{of|{{{for}}}}}}}}&lt;br /&gt;
  |info=**Shortcuts are [[wikilink]]ed on community pages, talk pages, and edit summaries, but not in [[wp:mainspace|mainspace]] articles.&lt;br /&gt;
  |all category=Redirects from shortcuts&lt;br /&gt;
  |printworthy=no&lt;br /&gt;
}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Place categories on /doc subpage; interwikis go to Wikidata. --&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:R_from_template_shortcut&amp;diff=18790</id>
		<title>Template:R from template shortcut</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:R_from_template_shortcut&amp;diff=18790"/>
		<updated>2025-08-13T06:45:22Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:R_from_template_shortcut&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:R from shortcut]]&lt;br /&gt;
&lt;br /&gt;
{{rcat shell|&lt;br /&gt;
{{R from merge}}&lt;br /&gt;
{{R to rcat}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:R_from_merge&amp;diff=18789</id>
		<title>Template:R from merge</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:R_from_merge&amp;diff=18789"/>
		<updated>2025-08-13T06:44:41Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:R_from_merge&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{This is a redirect/rcat}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{Redirect template&lt;br /&gt;
  |id=R from merge&lt;br /&gt;
  |name=From a merge&lt;br /&gt;
  |from=a page that was merged into another page&lt;br /&gt;
  |info=This redirect was kept in order to preserve [[Special:PageHistory/{{FULLPAGENAMEE}}|&#039;&#039;&#039;the edit history of this page&#039;&#039;&#039;]] after its content was merged into {{#if:{{{1|}}}|&#039;&#039;&#039;[[{{{1}}}]]&#039;&#039;&#039;|the content of the target page}}.  Please &#039;&#039;do not&#039;&#039; remove the tag that generates this text (unless the need to recreate content on this page has been demonstrated) or delete this page.&lt;br /&gt;
** For redirects with substantive [[Help:page histories|page histories]] that &#039;&#039;did not result from page merges&#039;&#039; use {{tl|R with history}} instead. &lt;br /&gt;
  |all category=Redirects from merges&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Place categories on /doc subpage; interwikis go to Wikidata. --&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Category_link/core&amp;diff=18788</id>
		<title>Template:Category link/core</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Category_link/core&amp;diff=18788"/>
		<updated>2025-08-13T06:44:01Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Category_link/core&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[:Category:{{{1}}}|{{{2}}}]]{{#if:{{Yesno|1={{{count|no}}}}}|&amp;amp;nbsp;&amp;lt;small style=&amp;quot;{{#ifexpr:{{{page_count}}}&amp;gt;={{{backlog}}}|font-weight: bold; color: #DD0000;}}&amp;quot;&amp;gt;(&amp;amp;thinsp;{{formatnum:{{{page_count}}}}}&amp;amp;thinsp;)&amp;lt;/small&amp;gt;}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation|Template:Category link/doc}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Category_link&amp;diff=18787</id>
		<title>Template:Category link</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Category_link&amp;diff=18787"/>
		<updated>2025-08-13T06:43:39Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Category_link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category link/core|1={{PAGENAME:{{{1}}}}}|2={{{2|Category:{{PAGENAME:{{{1}}}}}}}}|count={{{count|no}}}|page_count={{PAGESINCAT:{{PAGENAME:{{{1}}}}}|{{UC:{{{count_type|ALL}}}}}|R}}|backlog={{{backlog|{{formatnum:{{NUMBEROFPAGES}}|R}}}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Cat&amp;diff=18785</id>
		<title>Template:Cat</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Cat&amp;diff=18785"/>
		<updated>2025-08-13T06:43:10Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Cat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Category link]]&lt;br /&gt;
&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from merge}}&lt;br /&gt;
{{R from template shortcut}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:R_from_move/except&amp;diff=18784</id>
		<title>Template:R from move/except</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:R_from_move/except&amp;diff=18784"/>
		<updated>2025-08-13T06:42:40Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:R_from_move/except&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This is the exception page for {{tl|R from move}}.  This page makes exceptions that include certain pages that should not inhabit either {{cat|Unsynchronized talk page redirects}} or {{cat|Redirects from moves}}.  If necessary, new exceptions may be added with no need to edit the main template, {{tl|R from move}}.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{#switch: {{FULLPAGENAME}}&lt;br /&gt;
|MediaWiki:Move-redirect-text=&lt;br /&gt;
|Template:R from move/except=&lt;br /&gt;
|#default=[[Category:Redirects from moves]]&lt;br /&gt;
}}{{#switch: {{NAMESPACENUMBER}}&lt;br /&gt;
  |1={{#ifeq: {{#invoke:redirect|isRedirect|{{FULLPAGENAME}}}}|yes|&lt;br /&gt;
      {{#ifeq: {{#invoke:redirect|isRedirect|{{SUBJECTPAGENAME}}}}|yes|&lt;br /&gt;
        {{#ifeq: {{PAGENAME:{{#invoke:redirect|main|{{TALKPAGENAME}}}}}}|{{PAGENAME:{{#invoke:redirect|main|{{SUBJECTPAGENAME}}}}}}||&lt;br /&gt;
          {{#ifeq: {{FULLPAGENAME}}|{{SUBJECTPAGENAME}}||&lt;br /&gt;
            {{#ifeq: {{Str left|{{PAGENAME}}|16}}|List of ships of||[[Category:Unsynchronized talk page redirects]]&lt;br /&gt;
            }}&lt;br /&gt;
          }}&lt;br /&gt;
        }}&lt;br /&gt;
      |{{#ifexist:{{SUBJECTPAGENAME}}|&lt;br /&gt;
        {{#ifeq: {{SUBJECTPAGENAME}}|{{Target of|{{SUBJECTPAGENAME:{{Target of|{{FULLPAGENAME}}}}}}}}|[[Category:Articles with unsynchronized talk page redirects]]|&lt;br /&gt;
          {{#ifexpr: {{#invoke:string|find|{{#invoke:page|getContent|{{SUBJECTPAGENAME}}|as=raw}}|:Rfd}}|[[Category:Redirects for discussion with talk page redirects]]|[[Category:Articles with talk page redirects]]}}}}&lt;br /&gt;
        }}&lt;br /&gt;
      }}&lt;br /&gt;
    |{{error|Page is not a redirect, misplaced [[Template:R from move]]}}&lt;br /&gt;
    }}&lt;br /&gt;
  |0={{#switch:{{NAMESPACENUMBER:{{#invoke:redirect|main|{{FULLPAGENAME}}}}}}|0|4|10|12|14|100=|#default={{R from move/Cross-namespace}}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation|Template:R from move/doc}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Module:Redirect_template&amp;diff=18782</id>
		<title>Module:Redirect template</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Module:Redirect_template&amp;diff=18782"/>
		<updated>2025-08-13T06:41:57Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Module:Redirect_template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&#039;strict&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- key is beginning of arg name. value is table with namespace number and link&lt;br /&gt;
-- alternatively, a function taking the namespace number and returning a validity&lt;br /&gt;
-- can be used&lt;br /&gt;
local namespaceCategories = {&lt;br /&gt;
	all = { function() return true end },&lt;br /&gt;
	main = { 0, &#039;[[WP:Mainspace|main]]&#039; },&lt;br /&gt;
	help = { 12, &#039;[[WP:Help namespace|help]]&#039; },&lt;br /&gt;
	portal = { 100, &#039;[[WP:Portal|portal]]&#039; },&lt;br /&gt;
	mos = { 126, &#039;[[WP:MOS namespace|MOS]]&#039; },&lt;br /&gt;
	talk = { function(n) return n &amp;gt; 0 and n%2 == 1 end, &#039;[[Help:Talk pages|talk]]&#039; },&lt;br /&gt;
	template = { 10, &#039;[[WP:Template namespace|template]]&#039; },&lt;br /&gt;
	wikipedia = { 4, &#039;[[WP:Project namespace|Wikipedia project]]&#039; },&lt;br /&gt;
	category = { 14, &#039;[[WP:Categorization|category]]&#039; },&lt;br /&gt;
	user = { 2, &#039;[[WP:User pages|user]]&#039; },&lt;br /&gt;
	draft = { 118, &#039;[[WP:Drafts|draft]]&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- remove whitespaces from beginning and end of args&lt;br /&gt;
local function valueFunc(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		val = val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if val == &#039;&#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getPrettyName(args)&lt;br /&gt;
	for k in pairs(namespaceCategories) do&lt;br /&gt;
		if args[k .. &#039; category&#039;] then&lt;br /&gt;
			return string.format(&amp;quot;&#039;&#039;&#039;[[:Category:%s|%s]]&#039;&#039;&#039;: &amp;quot;, args[k .. &#039; category&#039;], args.name)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&amp;quot;&#039;&#039;&#039;%s&#039;&#039;&#039;: &amp;quot;, args.name)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&#039;Module:Arguments&#039;).getArgs(frame, {wrappers = &#039;Template:Redirect template&#039;, valueFunc = valueFunc})&lt;br /&gt;
	local namespace = mw.title.getCurrentTitle().namespace&lt;br /&gt;
&lt;br /&gt;
	--- XXX: this is a HORRIBLE HACK. kill it with fire as soon as https://phabricator.wikimedia.org/T14974 is fixed&lt;br /&gt;
	--- [[phab:T14974]] was previously known as [[bugzilla:12974]] https://bugzilla.wikimedia.org/show_bug.cgi?id=12974&lt;br /&gt;
	local beCompatibleWithBug14974 = args.info and (args.info:find(&#039;^[:;#*]&#039;, 1) == 1 or args.info:find(&#039;{|&#039;, 1, true) == 1) and &#039;\n&#039; or &#039; &#039;&lt;br /&gt;
	&lt;br /&gt;
	local content = string.format(&#039;\n&amp;lt;div class=&amp;quot;rcat %s&amp;quot;&amp;gt;\n*%sThis is a redirect%s%s.%s%s\n&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
		args.id and (&#039;rcat-&#039; .. string.gsub(args.id, &#039; &#039;, &#039;_&#039;)) or &#039;&#039;,&lt;br /&gt;
		args.name and getPrettyName(args) or &#039;&#039;,&lt;br /&gt;
		args.from and (&#039; from &#039; .. args.from) or &#039;&#039;,&lt;br /&gt;
		args.to and (&#039; to &#039; .. args.to) or &#039;&#039;,&lt;br /&gt;
		args.info and beCompatibleWithBug14974 or &#039;&#039;,&lt;br /&gt;
		args.info or &#039;&#039;&lt;br /&gt;
	)&lt;br /&gt;
	&lt;br /&gt;
	for k,v in pairs(namespaceCategories) do&lt;br /&gt;
		if args[k .. &#039; category&#039;] then&lt;br /&gt;
			if type(v[1]) == &#039;function&#039; and v[1](namespace) or v[1] == namespace then&lt;br /&gt;
				if args.sortkey then&lt;br /&gt;
					content = content .. string.format(&#039;[[Category:%s|%s]]&#039;, args[k .. &#039; category&#039;], args.sortkey)&lt;br /&gt;
					else&lt;br /&gt;
						content = content .. string.format(&#039;[[Category:%s]]&#039;, args[k .. &#039; category&#039;])&lt;br /&gt;
				end&lt;br /&gt;
			elseif args[&#039;other category&#039;] then&lt;br /&gt;
				if args.sortkey then&lt;br /&gt;
					content = content .. string.format(&#039;[[Category:%s|%s]]&#039;, args[&#039;other category&#039;], args.sortkey)&lt;br /&gt;
					else&lt;br /&gt;
						content = content .. string.format(&#039;[[Category:%s]]&#039;, args[&#039;other category&#039;])&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				content = content .. frame:expandTemplate{title = &#039;Incorrect redirect template&#039;, args = {v[2]}}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if namespace == 0 then&lt;br /&gt;
		local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
		if yesno(args.printworthy) == true then&lt;br /&gt;
			return content .. &#039;[[Category:Printworthy redirects]]&#039;&lt;br /&gt;
		elseif yesno(args.printworthy) == false then&lt;br /&gt;
			return content .. &#039;[[Category:Unprintworthy redirects]]&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return content&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Redirect_template&amp;diff=18780</id>
		<title>Template:Redirect template</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Redirect_template&amp;diff=18780"/>
		<updated>2025-08-13T06:41:31Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Redirect_template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Redirect template|main}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Smallcaps/styles.css&amp;diff=18778</id>
		<title>Template:Smallcaps/styles.css</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Smallcaps/styles.css&amp;diff=18778"/>
		<updated>2025-08-13T06:40:31Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Smallcaps/styles.css&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp-template}}&lt;br /&gt;
Styling for Template:Smallcaps */&lt;br /&gt;
span.smallcaps {&lt;br /&gt;
	font-variant: small-caps;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
span.smallcaps-smaller {&lt;br /&gt;
	font-size: 85%;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Ifsubst&amp;diff=18777</id>
		<title>Template:Ifsubst</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Ifsubst&amp;diff=18777"/>
		<updated>2025-08-13T06:39:51Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Ifsubst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ safesubst:&amp;lt;noinclude/&amp;gt;#if:{{{demo|}}}&lt;br /&gt;
|{{ safesubst:&amp;lt;noinclude/&amp;gt;#ifeq:{{{demo}}} |no&lt;br /&gt;
 |{{{no|{{{2|}}}}}}&lt;br /&gt;
 |{{{yes|{{{1|}}}}}}&lt;br /&gt;
}}&lt;br /&gt;
|{{ safesubst:&amp;lt;noinclude/&amp;gt;#ifeq:{{ safesubst:&amp;lt;noinclude/&amp;gt;NAMESPACE}}|{{NAMESPACE}}&lt;br /&gt;
 |{{{no|{{{2|}}}}}}&lt;br /&gt;
 |{{{yes|{{{1|}}}}}}&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>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Smallcaps&amp;diff=18776</id>
		<title>Template:Smallcaps</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Smallcaps&amp;diff=18776"/>
		<updated>2025-08-13T06:39:29Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Smallcaps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;ifsubst | 1=&amp;lt;span style=&amp;quot;font-variant:small-caps&amp;quot;&amp;gt;{{{1}}}&amp;lt;/span&amp;gt; | 2=&amp;lt;templatestyles src=&amp;quot;smallcaps/styles.css&amp;quot;/&amp;gt;&amp;lt;span class=&amp;quot;smallcaps&amp;quot;&amp;gt;{{{1}}}&amp;lt;/span&amp;gt; }}&amp;lt;noinclude&amp;gt;&lt;br /&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>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:This_is_a_redirect/rcat&amp;diff=18773</id>
		<title>Template:This is a redirect/rcat</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:This_is_a_redirect/rcat&amp;diff=18773"/>
		<updated>2025-08-13T06:38:23Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:This_is_a_redirect/rcat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq:{{NAMESPACE}}|Template talk||&#039;&#039;&#039;{{small|{{smallcaps|When used with the}} &amp;quot;Redirect category shell&amp;quot; (Rcat shell) {{smallcaps|template:}}}}}}&#039;&#039;&#039;&lt;br /&gt;
{{Mbox&lt;br /&gt;
| name  = This is a redirect/rcat&lt;br /&gt;
| type  = move &lt;br /&gt;
| image = none&lt;br /&gt;
| style = margin-top: 1.1em; border: solid 1px darkblue; border-left-width: 0.5em;&lt;br /&gt;
| textstyle = padding-top: 0.9em; padding-bottom: 0.9em;&lt;br /&gt;
| text  = &#039;&#039;&#039;This page is a [[Wikipedia:Redirect|redirect]]. &amp;lt;small&amp;gt;The following [[Wikipedia:Categorizing redirects|categories]] are used to track and monitor this redirect:&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
{{#ifeq:{{PAGENAME}}|R avoided double redirect|&amp;lt;includeonly&amp;gt;{{{text|{{ {{#switch:{{PAGENAME}}|This is a redirect/rcat=|This is a redirect/rcat/sandbox=|This is a redirect/rcat/testcases=|#default={{PAGENAME}}}}|embed=yes}}}}}&amp;lt;/includeonly&amp;gt;|&lt;br /&gt;
&amp;lt;noinclude&amp;gt;* (Text of rcat)&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{{text|{{ {{#switch:{{PAGENAME}}|This is a redirect/rcat=|This is a redirect/rcat/sandbox=|This is a redirect/rcat/testcases=|#default={{PAGENAME}}}}|embed=yes}}}}}&amp;lt;/includeonly&amp;gt;}}&lt;br /&gt;
&#039;&#039;&amp;lt;small&amp;gt;When appropriate, [[WP:PP|protection levels]] are automatically sensed, described and categorized.&amp;lt;/small&amp;gt;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
:&#039;&#039;{{small|Template {{tl|Redirect category shell}} may be used to add one or more [[WP:RCAT|rcat]] templates, along with their parameters and categories, to a redirect.  {{#ifeq:{{NAMESPACE}}|Template talk||For more information, see the documentation page below.}}}}&#039;&#039;{{#ifeq:{{NAMESPACE}}|Template talk||{{#if:{{{1|}}}||&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;{{small|{{smallcaps|When used by itself:}}}}&#039;&#039;&#039;}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:R_from_move&amp;diff=18772</id>
		<title>Template:R from move</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:R_from_move&amp;diff=18772"/>
		<updated>2025-08-13T06:37:48Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:R_from_move&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{hatnote|This rcat template is automatically added to all new redirects that result from page moves; it must be added manually to older redirects when appropriate.}}{{This is a redirect/rcat}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;{{Redirect template&lt;br /&gt;
  |id=R from move&lt;br /&gt;
  |name=From a page move&lt;br /&gt;
  |from=a page that has been moved (renamed)&lt;br /&gt;
  |info=This page was kept as a redirect to avoid breaking links, both internal and external, that may have been made to the old page name.&lt;br /&gt;
  |all category=Redirects from moves&lt;br /&gt;
}}&amp;lt;includeonly&amp;gt;{{R from move/except}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Place categories on /doc subpage; interwikis go to Wikidata. --&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Category:CS1_errors:_requires_URL&amp;diff=18769</id>
		<title>Category:CS1 errors: requires URL</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Category:CS1_errors:_requires_URL&amp;diff=18769"/>
		<updated>2025-08-13T06:35:49Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Adapted from Wikipedia:Category:CS1_errors:_requires_URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tracking category}}&lt;br /&gt;
{{Center|{{Random page in category}}}}&lt;br /&gt;
This is a tracking category for {{tlx|cite web}} CS1 citations where {{para|url}} is blank or omitted.&lt;br /&gt;
{{CatAutoTOC}}&lt;br /&gt;
&lt;br /&gt;
[[Category:CS1 errors|U]]&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Automatic_category_TOC/core&amp;diff=18766</id>
		<title>Template:Automatic category TOC/core</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Automatic_category_TOC/core&amp;diff=18766"/>
		<updated>2025-08-13T06:34:21Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Automatic_category_TOC/core&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifexpr:{{{pagecount|0}}} &amp;gt; 1200&lt;br /&gt;
 |{{Large category TOC&lt;br /&gt;
  |CatAutoTOC = yes&lt;br /&gt;
  |pagecount = {{{pagecount}}}&lt;br /&gt;
 }}[[Category:Automatic category TOC generates Large category TOC]]&lt;br /&gt;
 |{{#ifexpr:{{{pagecount|0}}} &amp;gt; 100&lt;br /&gt;
  |{{Category TOC&lt;br /&gt;
   |pagecount={{{pagecount}}}&lt;br /&gt;
   |CatAutoTOC=yes&lt;br /&gt;
   |align = {{#if:{{{align|}}}|{{{align}}}|left}}&lt;br /&gt;
   |top = {{#if:{{{top|}}}|{{{top}}}|yes}}&lt;br /&gt;
   |numerals = {{#if:{{{numerals|}}}|{{{numerals}}}|group}}&lt;br /&gt;
   |uppercase = {{#if:{{{uppercase|}}}|{{{uppercase}}}|yes}}&lt;br /&gt;
   |lowercase = {{#if:{{{lowercase|}}}|{{{lowercase}}}|no}}&lt;br /&gt;
  }}[[Category:Automatic category TOC generates standard Category TOC]]&lt;br /&gt;
  |[[Category:Automatic category TOC generates no TOC]]&lt;br /&gt;
 }}&lt;br /&gt;
}}{{#ifeq:{{{pagecount}}}|0&lt;br /&gt;
 |[[Category:Automatic category TOC on pages where PAGESINCATEGORY returns zero]]&lt;br /&gt;
}}{{clear}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation|Template:{{ROOTPAGENAME}}/doc}}&lt;br /&gt;
[[Category:Wikipedia Automatic category TOC]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Automatic_category_TOC&amp;diff=18765</id>
		<title>Template:Automatic category TOC</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Automatic_category_TOC&amp;diff=18765"/>
		<updated>2025-08-13T06:33:33Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Automatic_category_TOC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
   # TOC, depending on category size&lt;br /&gt;
   # &amp;lt;= 100 pages → no TOC&lt;br /&gt;
   # 101–1200 pages → {{Category TOC}}&lt;br /&gt;
   # &amp;gt; 1200 pages → {{Large category TOC}}&lt;br /&gt;
--&amp;gt;{{Category other|&amp;lt;!--&lt;br /&gt;
#######################################################################&lt;br /&gt;
#### This is a category page, so generate a TOC if needed.         ####&lt;br /&gt;
####                                                               ####&lt;br /&gt;
#### Use a sub-template [[Template:Automatic category TOC/core]],  ####&lt;br /&gt;
#### so that we never have more than one call to the               ####&lt;br /&gt;
#### [[WP:EXPENSIVE]] function {{PAGESINCATEGORY}}                 ####&lt;br /&gt;
#######################################################################&lt;br /&gt;
    --&amp;gt;{{Automatic category TOC/core&amp;lt;!--&lt;br /&gt;
        --&amp;gt;|pagecount={{PAGESINCATEGORY:{{#invoke:HTMLDecode | HTMLDecode | text={{PAGENAME}} }}|R}}&amp;lt;!--&lt;br /&gt;
        --&amp;gt;|align     = {{{align|}}}&amp;lt;!--&lt;br /&gt;
        --&amp;gt;|top       = {{{top|}}}&amp;lt;!--&lt;br /&gt;
        --&amp;gt;|numerals  = {{{numerals|}}}&amp;lt;!--&lt;br /&gt;
        --&amp;gt;|uppercase = {{{uppercase|}}}&amp;lt;!--&lt;br /&gt;
        --&amp;gt;|lowercase = {{{lowercase|}}}&amp;lt;!--&lt;br /&gt;
    --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{Template other&amp;lt;!--&lt;br /&gt;
    --&amp;gt;|&amp;lt;!--&lt;br /&gt;
#######################################################################&lt;br /&gt;
#### This page is a template, so categorise it                     ####&lt;br /&gt;
#### in [[Category:Templates using Automatic category TOC]] ...    ####&lt;br /&gt;
####                                                               ####&lt;br /&gt;
#### ... unless it is a /doc, /testcases or /sandbox               ####&lt;br /&gt;
####                                                               ####&lt;br /&gt;
#### There is no point categorising every sub-page of the          ####&lt;br /&gt;
#### same template                                                 ####&lt;br /&gt;
#######################################################################&lt;br /&gt;
        --&amp;gt;{{#if: {{Str endswith|{{PAGENAME}}|/doc}}{{Str endswith|{{PAGENAME}}|/testcases}}{{Str endswith|{{PAGENAME}}|/sandbox}}&amp;lt;!--&lt;br /&gt;
        --&amp;gt;|&amp;lt;!--&lt;br /&gt;
               ### Don&#039;t categorise /doc, /testcases or /sandbox pages&lt;br /&gt;
        --&amp;gt;|&amp;lt;!--&lt;br /&gt;
               ### Not a /doc, /testcases or /sandbox page, so categorise it&lt;br /&gt;
            --&amp;gt;[[Category:Templates using Automatic category TOC]]&amp;lt;!--&lt;br /&gt;
    --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
[[Category:Wikipedia Automatic category TOC]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:CatAutoTOC&amp;diff=18764</id>
		<title>Template:CatAutoTOC</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:CatAutoTOC&amp;diff=18764"/>
		<updated>2025-08-13T06:32:51Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:CatAutoTOC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Automatic category TOC]]&lt;br /&gt;
&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from move}}&lt;br /&gt;
{{R from template shortcut}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Module:Template_wrapper&amp;diff=18762</id>
		<title>Module:Template wrapper</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Module:Template_wrapper&amp;diff=18762"/>
		<updated>2025-08-13T06:31:09Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Module:Template_wrapper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&#039;strict&#039;);&lt;br /&gt;
&lt;br /&gt;
local error_msg = &#039;&amp;lt;span style=\&amp;quot;font-size:100%\&amp;quot; class=\&amp;quot;error\&amp;quot;&amp;gt;&amp;lt;code style=\&amp;quot;color:inherit; border:inherit; padding:inherit;\&amp;quot;&amp;gt;&amp;amp;#124;_template=&amp;lt;/code&amp;gt; missing or empty&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ I N _ T A B L E &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
scan through tbl looking for value; return true if found, false else&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_in_table (tbl, value)&lt;br /&gt;
    for k, v in pairs (tbl) do&lt;br /&gt;
        if v == value then return true end&lt;br /&gt;
    end&lt;br /&gt;
    return false;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A D D _ P A R A M E T E R &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
adds parameter name and its value to args table according to the state of boolean list argument; kv pair for&lt;br /&gt;
template execution; k=v string for template listing.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function add_parameter (k, v, args, list)&lt;br /&gt;
	if list then&lt;br /&gt;
		table.insert( args, table.concat ({k, &#039;=&#039;, v}));						-- write parameter names and values to args table as string&lt;br /&gt;
	else&lt;br /&gt;
		args[k] = v;															-- copy parameters to args table&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A L I A S _ M A P _ G E T &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns a table of local template (parent frame) parameter names and the target template names that match where&lt;br /&gt;
in [key]=&amp;lt;value&amp;gt; pairs where:&lt;br /&gt;
	[key] is local template parameter name (an alias)&lt;br /&gt;
	&amp;lt;value&amp;gt; is target template parameter name (the canonical parameter name used in the working template)&lt;br /&gt;
&lt;br /&gt;
The parameter |_alias-map= has the form:&lt;br /&gt;
	|_alias-map=&amp;lt;list&amp;gt;&lt;br /&gt;
where &amp;lt;list&amp;gt; is a comma-separated list of alias / canonical parameter name pairs in the form&lt;br /&gt;
	&amp;lt;from&amp;gt; : &amp;lt;to&amp;gt;&lt;br /&gt;
where:&lt;br /&gt;
	&amp;lt;from&amp;gt; is the local template&#039;s parameter name (alias)&lt;br /&gt;
	&amp;lt;to&amp;gt; is the target template&#039;s parameter name (canonical)&lt;br /&gt;
	for enumerated parameters place an octothorp (#) where the enumerator digits are placed in the parameter names:&lt;br /&gt;
		&amp;lt;from#&amp;gt; : &amp;lt;to#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function alias_map_get (_alias_map)&lt;br /&gt;
	local T = mw.text.split (_alias_map, &#039;%s*,%s*&#039;);							-- convert the comma-separated list into a table of alias pairs&lt;br /&gt;
	local mapped_aliases = {};													-- mapped aliases will go here&lt;br /&gt;
	local l_name, t_name;														-- parameter names&lt;br /&gt;
	&lt;br /&gt;
	for _, alias_pair in ipairs (T) do											-- loop through the table of alias pairs&lt;br /&gt;
		l_name, t_name = alias_pair:match (&#039;(.-)%s*:%s*(.+)&#039;);					-- from each pair, get local and target parameter names&lt;br /&gt;
		if l_name and t_name then												-- if both are set&lt;br /&gt;
			if tonumber (l_name) then&lt;br /&gt;
				l_name = tonumber (l_name);										-- convert number-as-text to a number&lt;br /&gt;
			end&lt;br /&gt;
			mapped_aliases[l_name] = t_name;									-- add them to the map table&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mapped_aliases;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; F R A M E _ A R G S _ G E T &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Fetch the wrapper template&#039;s &#039;default&#039; and control parameters; adds default parameters to args&lt;br /&gt;
&lt;br /&gt;
returns content of |_template= parameter (name of the working template); nil else&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function frame_args_get (frame_args, args, list)&lt;br /&gt;
	local template;&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (frame_args) do											-- here we get the wrapper template&#039;s &#039;default&#039; parameters&lt;br /&gt;
		if &#039;string&#039; == type (k) and (v and (&#039;&#039; ~= v)) then						-- do not pass along positional or empty parameters&lt;br /&gt;
			if &#039;_template&#039; == k then&lt;br /&gt;
				template = v;													-- save the name of template that we are wrapping&lt;br /&gt;
			elseif &#039;_exclude&#039; ~= k and &#039;_reuse&#039; ~= k and &#039;_include-positional&#039; ~= k  and &#039;_alias-map&#039; ~= k then	-- these already handled so ignore here; &lt;br /&gt;
				add_parameter (k, v, args, list);								-- add all other parameters to args in the style dictated by list&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return template;															-- return contents of |_template= parameter&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[--------------------------&amp;lt; P F R A M E _ A R G S _ G E T &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Fetches the wrapper template&#039;s &#039;live&#039; parameters; adds live parameters that aren&#039;t members of the exclude table to&lt;br /&gt;
args table; positional parameters may not be excluded&lt;br /&gt;
&lt;br /&gt;
no return value&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function pframe_args_get (pframe_args, args, exclude, _include_positional, list)&lt;br /&gt;
	for k, v in pairs (pframe_args) do&lt;br /&gt;
		if &#039;string&#039; == type (k) and not is_in_table (exclude, k) then			-- do not pass along excluded parameters&lt;br /&gt;
			if v and (&#039;&#039; ~= v) then												-- pass along only those parameters that have assigned values&lt;br /&gt;
				if &#039;unset&#039; == v:lower() then									-- special keyword to unset &#039;default&#039; parameters set in the wrapper template&lt;br /&gt;
					v = &#039;&#039;;														-- unset the value in the args table&lt;br /&gt;
				end&lt;br /&gt;
				add_parameter (k, v, args, list)								-- add all other parameters to args in the style dictated by list; alias map only supported for local-template parameters&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if _include_positional then&lt;br /&gt;
		for i, v in ipairs (pframe_args) do										-- pass along positional parameters&lt;br /&gt;
			if &#039;unset&#039; == v:lower() then										-- special keyword to unset &#039;default&#039; parameters set in the wrapper template&lt;br /&gt;
				v = &#039;&#039;;															-- unset the value in the args table&lt;br /&gt;
			end&lt;br /&gt;
			add_parameter (i, v, args, list);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ M A I N &amp;gt;--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Collect the various default and live parameters into args styled according to boolean list.&lt;br /&gt;
&lt;br /&gt;
returns name of the working or listed template or nil for an error message&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _main (frame, args, list)&lt;br /&gt;
	local template;&lt;br /&gt;
	local exclude = {};															-- table of parameter names for parameters that are not passed to the working template&lt;br /&gt;
	local reuse_list = {};														-- table of pframe parameter names whose values are modified before they are passed to the working template as the same name&lt;br /&gt;
	local alias_map = {};														-- table that maps parameter aliases to working template canonical parameter names&lt;br /&gt;
	local _include_positional;&lt;br /&gt;
	&lt;br /&gt;
	if frame.args._exclude and (&#039;&#039; ~= frame.args._exclude) then					-- if there is |_exclude= and it&#039;s not empty&lt;br /&gt;
		exclude = mw.text.split (frame.args._exclude, &amp;quot;%s*,%s*&amp;quot;);				-- make a table from its contents&lt;br /&gt;
	end&lt;br /&gt;
																				-- TODO: |_reuse= needs a better name (|_reuse=)&lt;br /&gt;
	if frame.args._reuse and (&#039;&#039; ~= frame.args._reuse) then					-- if there is |_reuse= and it&#039;s not empty&lt;br /&gt;
		reuse_list = mw.text.split (frame.args._reuse, &amp;quot;%s*,%s*&amp;quot;);				-- make a table from its contents&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if frame.args[&#039;_alias-map&#039;] and (&#039;&#039; ~= frame.args[&#039;_alias-map&#039;]) then		-- if there is |_alias-map= and it&#039;s not empty&lt;br /&gt;
		alias_map = alias_map_get (frame.args[&#039;_alias-map&#039;]);					-- make a table from its contents&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	template = frame_args_get (frame.args, args, list);							-- get parameters provided in the {{#invoke:template wrapper|...|...}}&lt;br /&gt;
	if nil == template or &#039;&#039; == template then									-- this is the one parameter that is required by this module&lt;br /&gt;
		return nil;																-- not present, tell calling function to emit an error message&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	_include_positional = &#039;yes&#039; == frame.args[&#039;_include-positional&#039;];			-- when true pass all positional parameters along with non-excluded named parameters to ...&lt;br /&gt;
																				-- ... the working template; positional parameters are not excludable&lt;br /&gt;
																				&lt;br /&gt;
	local _pframe_args = frame:getParent().args;								-- here we get the wrapper template&#039;s &#039;live&#039; parameters from pframe.args&lt;br /&gt;
	local pframe_args = {};														-- a local table that we can modify&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (_pframe_args) do											-- make a copy that we can modify&lt;br /&gt;
		pframe_args[k] = v;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
-- here we look for pframe parameters that are aliases of canonical parameter names; when found&lt;br /&gt;
-- we replace the alias with the canonical.  We do this here because the reuse_list works on&lt;br /&gt;
-- canonical parameter names so first we convert alias parameter names to canonical names and then&lt;br /&gt;
-- we remove those canonical names from the pframe table that are reused (provided to the working&lt;br /&gt;
-- template through the frame args table)&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (alias_map) do											-- k is alias name, v is canonical name&lt;br /&gt;
		if pframe_args[k] then													-- if pframe_args has parameter with alias name&lt;br /&gt;
			pframe_args[v] = _pframe_args[k];									-- create new canonical name with alias&#039; value&lt;br /&gt;
			pframe_args[k] = nil;												-- unset the alias&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (pframe_args) do											-- do enumerated parameter alias -&amp;gt; canonical translation&lt;br /&gt;
		if &#039;string&#039; == type (k) then											-- only named parameters can be enumerated&lt;br /&gt;
			if alias_map[k..&#039;#&#039;] then											-- non-enumerated alias matches enumerated parameter pattern? enumerator at end only&lt;br /&gt;
				pframe_args[alias_map[k..&#039;#&#039;]:gsub(&#039;#&#039;, &#039;&#039;)] = v;				-- remove &#039;#&#039; and copy parameter to pframe_args table&lt;br /&gt;
				pframe_args[k] = nil;											-- unset the alias&lt;br /&gt;
			elseif k:match (&#039;%d+&#039;) then											-- if this parameter name contains digits&lt;br /&gt;
				local temp = k:gsub (&#039;%d+&#039;, &#039;#&#039;);								-- make a copy; digits replaced with single &#039;#&#039;&lt;br /&gt;
				local enum = k:match (&#039;%d+&#039;);									-- get the enumerator&lt;br /&gt;
				&lt;br /&gt;
				if alias_map[temp] then											-- if this parameter is a recognized enumerated alias&lt;br /&gt;
					pframe_args[alias_map[temp]:gsub(&#039;#&#039;, enum)] = v;			-- use canonical name and replace &#039;#&#039; with enumerator and add to pframe_args&lt;br /&gt;
					pframe_args[k] = nil;										-- unset the alias&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- pframe parameters that are _reused are &#039;reused&#039; have the form something like this:&lt;br /&gt;
--	|chapter=[[wikisource:{{{chapter}}}|{{{chapter}}}]]&lt;br /&gt;
-- where a parameter in the wrapping template is modified and then passed to the working template&lt;br /&gt;
-- using the same parameter name (in this example |chapter=)&lt;br /&gt;
&lt;br /&gt;
																				-- remove parameters that will be reused&lt;br /&gt;
	for k, v in ipairs (reuse_list) do											-- k is numerical index, v is canonical parameter name to ignore&lt;br /&gt;
		if pframe_args[v] then													-- if pframe_args has parameter that should be ignored&lt;br /&gt;
			pframe_args[v] = nil;												-- unset the ignored parameter&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	pframe_args_get (pframe_args, args, exclude, _include_positional, list);	-- add parameters and values to args that are not listed in the exclude table&lt;br /&gt;
&lt;br /&gt;
	return template;															-- args now has all default and live parameters, return working template name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; W R A P &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Template entry point.  Call this function to &#039;execute&#039; the working template&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function wrap (frame)&lt;br /&gt;
	local args = {};															-- table of default and live parameters and their values to be passed to the wrapped template&lt;br /&gt;
	local template;																-- the name of the working template&lt;br /&gt;
&lt;br /&gt;
	template = _main (frame, args, false);										-- get default and live parameters and the name of the working template&lt;br /&gt;
	if not template then														-- template name is required&lt;br /&gt;
		return error_msg;														-- emit error message and abandon if template name not present&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return frame:expandTemplate {title=template, args=args};					-- render the working template&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L I S T &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Template entry point.  Call this function to &#039;display&#039; the source for the working template.  This function added&lt;br /&gt;
as a result of a TfD here: Wikipedia:Templates_for_discussion/Log/2018_April_28#Module:PassArguments&lt;br /&gt;
&lt;br /&gt;
This function replaces a similarly named function which was used in {{cite compare}} and {{cite compare2}}&lt;br /&gt;
&lt;br /&gt;
Values in the args table are numerically indexed strings in the form &#039;name=value&#039;&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function list(frame, do_link)&lt;br /&gt;
	local args = {};						-- table of default and live parameters and their values to be passed to the listed template&lt;br /&gt;
	local template;							-- the name of the listed template&lt;br /&gt;
&lt;br /&gt;
	template = _main (frame, args, true);	-- get default and live parameters and the name of the listed template&lt;br /&gt;
	if not template then					-- template name is required&lt;br /&gt;
		return error_msg;					-- emit error message and abandon if template name not present&lt;br /&gt;
	end&lt;br /&gt;
	if do_link then&lt;br /&gt;
		template = (&#039;[[%s|%s]]&#039;):format(frame:expandTemplate{ title=&#039;Transclude&#039;, args = {template} }, template)&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(args)&lt;br /&gt;
	for i = 1, #args do&lt;br /&gt;
		local stripped = args[i]:match(&#039;^&#039; .. i .. &#039;=([^=]*)$&#039;)&lt;br /&gt;
		if stripped then args[i] = stripped else break end&lt;br /&gt;
	end&lt;br /&gt;
	return frame:preprocess(table.concat({&lt;br /&gt;
		&#039;&amp;lt;code style=&amp;quot;color:inherit; background:inherit; border:none;&amp;quot;&amp;gt;&amp;amp;#123;&amp;amp;#123;&#039;,&lt;br /&gt;
		template,&lt;br /&gt;
		(&#039;&amp;lt;wbr&amp;gt;&amp;lt;nowiki&amp;gt;|%s&amp;lt;/nowiki&amp;gt;&#039;):rep(#args):format(unpack(args)), &#039;&amp;amp;#125;&amp;amp;#125;&amp;lt;/code&amp;gt;&#039;}));	-- render the template&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function link (frame)&lt;br /&gt;
	return list(frame, true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   F U N C T I O N S &amp;gt;------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	link = link,&lt;br /&gt;
	list = list,&lt;br /&gt;
	wrap = wrap,&lt;br /&gt;
	};&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Plainlist/styles.css&amp;diff=18761</id>
		<title>Template:Plainlist/styles.css</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Plainlist/styles.css&amp;diff=18761"/>
		<updated>2025-08-13T06:30:08Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Plainlist/styles.css&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>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Module:Shortcut/styles.css&amp;diff=18760</id>
		<title>Module:Shortcut/styles.css</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Module:Shortcut/styles.css&amp;diff=18760"/>
		<updated>2025-08-13T06:29:22Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Module:Shortcut/styles.css&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{pp-template}} */&lt;br /&gt;
.module-shortcutboxplain {&lt;br /&gt;
	float: right;&lt;br /&gt;
	margin: 0 0 0 1em;&lt;br /&gt;
	border: 1px solid var(--border-color-base, #a2a9b1);&lt;br /&gt;
	background-color: var(--background-color-base, #fff);&lt;br /&gt;
	padding: 0.3em 0.6em 0.2em 0.6em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	font-size: 85%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.module-shortcutboxleft {&lt;br /&gt;
	float: left;&lt;br /&gt;
	margin: 0 1em 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.module-shortcutlist {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	border-bottom: 1px solid var(--border-color-base, #a2a9b1);&lt;br /&gt;
	margin-bottom: 0.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.module-shortcutboxplain ul {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.module-shortcutanchordiv {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	top: -3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li .module-shortcutanchordiv {&lt;br /&gt;
	float: right; /* IE/Edge in list items */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mbox-imageright .module-shortcutboxplain {&lt;br /&gt;
	padding: 0.4em 1em 0.4em 1em;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:No_redirect/doc&amp;diff=18758</id>
		<title>Template:No redirect/doc</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:No_redirect/doc&amp;diff=18758"/>
		<updated>2025-08-13T06:27:52Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:No_redirect/doc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
{{expensive}}&lt;br /&gt;
{{High-risk}}&lt;br /&gt;
{{tsh|-r}}&lt;br /&gt;
{{Lua|Module:Redirect}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
This template provides an easy way to link a redirect page without following the redirect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;{{no redirect|page name|label}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It accepts two unnamed parameters:&lt;br /&gt;
* 1= (required) the name of the page to link.&lt;br /&gt;
* 2= (optional) the text to be displayed. If this is omitted then the input of the first parameter is used.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
Instead of having to copy/paste or type:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[https://en.wikipedia.org/w/index.php?title=The_Silence_of_the_Sea&amp;amp;redirect=no &#039;&#039;The Silence of the Sea&#039;&#039;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** to yield [https://en.wikipedia.org/w/index.php?title=The_Silence_of_the_Sea&amp;amp;redirect=no &#039;&#039;The Silence of the Sea&#039;&#039;]&lt;br /&gt;
an editor can type:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&#039;&#039;{{No redirect|The Silence of the Sea}}&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
or an &#039;&#039;&#039;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://en.wikipedia.org/w/index.php?title=Special:WhatLinksHere/Template:No_redirect&amp;amp;hidelinks=1&amp;amp;hidetrans=1 alias]&amp;lt;/span&amp;gt;&#039;&#039;&#039; can be used, as in:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&#039;&#039;{{-r|The Silence of the Sea}}&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Both of those will take users &#039;&#039;directly&#039;&#039; to the same redirect page and display its pagename as a bluelink thus (using the alias): &#039;&#039;{{-r|The Silence of the Sea}}&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The second parameter (label) may be useful in discussions on talk pages. For example,&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{-r|The Silence of the Sea|this redirect}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
may appear on a talk page in this context: &amp;quot;For reference, see {{-r|The Silence of the Sea|this redirect}}.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If there is no page with that name given by the first parameter, the template generates a redlink as for any article name:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{-r|Bill Clinton (nickname)}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; displays as {{-r|Bill Clinton (nickname)}}&lt;br /&gt;
&lt;br /&gt;
Also, if a page is not a redirect, a normal link is displayed:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{-r|Bill Clinton}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; displays as {{-r|Bill Clinton}}&lt;br /&gt;
&lt;br /&gt;
== 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;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Page name&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The name of the page to link&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Label&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The text to be displayed. If this is omitted then the input of the first parameter, page name, is used.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;This template provides an easy way to link a redirect page without following the redirect.&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* {{tl|Template link no redirect}}&lt;br /&gt;
* {{tl|Redirect?}}&lt;br /&gt;
* {{tl|no redirect}}, {{tlf|-r}}&lt;br /&gt;
* {{tl|redirect}} &amp;amp;mdash; hatnote &amp;quot;&#039;&#039;Foo&#039;&#039; redirects here ...&amp;quot;&lt;br /&gt;
* {{tl|is redirect}} &amp;amp;mdash; returns yes/&amp;amp;lt;blank&amp;gt;&lt;br /&gt;
* [[Wikipedia:Redirect]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
[[Category:Internal link templates]]&lt;br /&gt;
[[Category:Redirect templates| No redirect]]&lt;br /&gt;
[[Category:Redirect formatting templates| No redirect]]&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:No_redirect&amp;diff=18757</id>
		<title>Template:No redirect</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:No_redirect&amp;diff=18757"/>
		<updated>2025-08-13T06:27:15Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:No_redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{safesubst:&amp;lt;noinclude/&amp;gt;#if: {{safesubst:&amp;lt;noinclude/&amp;gt;#invoke:Redirect|isRedirect|{{{1}}}}}&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{safesubst:&amp;lt;noinclude/&amp;gt;fullurl:{{{1}}}|redirect=no}} {{{2|{{{1}}}}}}]&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;display: none&amp;quot;&amp;gt;[[:{{{1}}}]]&amp;lt;/span&amp;gt;&lt;br /&gt;
| {{safesubst:&amp;lt;noinclude/&amp;gt;#if:{{{2|}}}|[[:{{safesubst:&amp;lt;noinclude/&amp;gt;FULLPAGENAME:{{{1}}}}}|{{{2}}}]]|[[:{{safesubst:&amp;lt;noinclude/&amp;gt;FULLPAGENAME:{{{1}}}}}]]}}&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>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Module:Shortcut/config&amp;diff=18756</id>
		<title>Module:Shortcut/config</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Module:Shortcut/config&amp;diff=18756"/>
		<updated>2025-08-13T06:26:16Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Module:Shortcut/config&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module holds configuration data for [[Module:Shortcut]].&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
&lt;br /&gt;
-- The heading at the top of the shortcut box. It accepts the following parameter:&lt;br /&gt;
-- $1 - the total number of shortcuts. (required)&lt;br /&gt;
[&#039;shortcut-heading&#039;] = &#039;[[Wikipedia:Shortcut|{{PLURAL:$1|Shortcut|Shortcuts}}]]&#039;,&lt;br /&gt;
&lt;br /&gt;
-- The heading when |redirect=yes is given. It accepts the following parameter:&lt;br /&gt;
-- $1 - the total number of shortcuts. (required)&lt;br /&gt;
[&#039;redirect-heading&#039;] = &#039;[[Wikipedia:Redirect|{{PLURAL:$1|Redirect|Redirects}}]]&#039;,&lt;br /&gt;
&lt;br /&gt;
-- The error message to display when a shortcut is invalid (is not a string, or&lt;br /&gt;
-- is the blank string). It accepts the following parameter:&lt;br /&gt;
-- $1 - the number of the shortcut in the argument list. (required)&lt;br /&gt;
[&#039;invalid-shortcut-error&#039;] = &#039;shortcut #$1 was invalid (shortcuts must be &#039; ..&lt;br /&gt;
	&#039;strings of at least one character in length)&#039;,&lt;br /&gt;
&lt;br /&gt;
-- The error message to display when no shortcuts or other displayable content&lt;br /&gt;
-- were specified. (required)&lt;br /&gt;
[&#039;no-content-error&#039;] = &#039;Error: no shortcuts were specified and the &#039; ..&lt;br /&gt;
	mw.text.nowiki(&#039;|msg=&#039;) ..&lt;br /&gt;
	&#039; parameter was not set.&#039;,&lt;br /&gt;
&lt;br /&gt;
-- A category to add when the no-content-error message is displayed. (optional)&lt;br /&gt;
[&#039;no-content-error-category&#039;] = &#039;Shortcut templates with missing parameters&#039;,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Module:Shortcut&amp;diff=18755</id>
		<title>Module:Shortcut</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Module:Shortcut&amp;diff=18755"/>
		<updated>2025-08-13T06:25:05Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Module:Shortcut&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{shortcut}}.&lt;br /&gt;
&lt;br /&gt;
-- Set constants&lt;br /&gt;
local CONFIG_MODULE = &#039;Module:Shortcut/config&#039;&lt;br /&gt;
&lt;br /&gt;
-- Load required modules&lt;br /&gt;
local checkType = require(&#039;libraryUtil&#039;).checkType&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function message(msg, ...)&lt;br /&gt;
	return mw.message.newRawMessage(msg, ...):plain()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeCategoryLink(cat)&lt;br /&gt;
	return string.format(&#039;[[%s:%s]]&#039;, mw.site.namespaces[14].name, cat)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(shortcuts, options, frame, cfg)&lt;br /&gt;
	checkType(&#039;_main&#039;, 1, shortcuts, &#039;table&#039;)&lt;br /&gt;
	checkType(&#039;_main&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	frame = frame or mw.getCurrentFrame()&lt;br /&gt;
	cfg = cfg or mw.loadData(CONFIG_MODULE)&lt;br /&gt;
	local templateMode = options.template and yesno(options.template)&lt;br /&gt;
	local redirectMode = options.redirect and yesno(options.redirect)&lt;br /&gt;
	local isCategorized = not options.category or yesno(options.category) ~= false&lt;br /&gt;
&lt;br /&gt;
	-- Validate shortcuts&lt;br /&gt;
	for i, shortcut in ipairs(shortcuts) do&lt;br /&gt;
		if type(shortcut) ~= &#039;string&#039; or #shortcut &amp;lt; 1 then&lt;br /&gt;
			error(message(cfg[&#039;invalid-shortcut-error&#039;], i), 2)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Make the list items. These are the shortcuts plus any extra lines such&lt;br /&gt;
	-- as options.msg.&lt;br /&gt;
	local listItems = {}&lt;br /&gt;
	for i, shortcut in ipairs(shortcuts) do&lt;br /&gt;
		local templatePath, prefix&lt;br /&gt;
		if templateMode then&lt;br /&gt;
			-- Namespace detection&lt;br /&gt;
			local titleObj = mw.title.new(shortcut, 10)&lt;br /&gt;
			if titleObj.namespace == 10 then&lt;br /&gt;
				templatePath = titleObj.fullText&lt;br /&gt;
			else&lt;br /&gt;
				templatePath = shortcut&lt;br /&gt;
			end&lt;br /&gt;
			prefix = options[&#039;pre&#039; .. i] or options.pre or &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		if options.target and yesno(options.target) then&lt;br /&gt;
			listItems[i] = templateMode&lt;br /&gt;
				and string.format(&amp;quot;&amp;amp;#123;&amp;amp;#123;%s[[%s|%s]]&amp;amp;#125;&amp;amp;#125;&amp;quot;, prefix, templatePath, shortcut)&lt;br /&gt;
				or string.format(&amp;quot;[[%s]]&amp;quot;, shortcut)&lt;br /&gt;
		else&lt;br /&gt;
			listItems[i] = frame:expandTemplate{&lt;br /&gt;
				title = &#039;No redirect&#039;,&lt;br /&gt;
				args = templateMode and {templatePath, shortcut} or {shortcut, shortcut}&lt;br /&gt;
			}&lt;br /&gt;
			if templateMode then&lt;br /&gt;
				listItems[i] = string.format(&amp;quot;&amp;amp;#123;&amp;amp;#123;%s%s&amp;amp;#125;&amp;amp;#125;&amp;quot;, prefix, listItems[i])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(listItems, options.msg)&lt;br /&gt;
&lt;br /&gt;
	-- Return an error if we have nothing to display&lt;br /&gt;
	if #listItems &amp;lt; 1 then&lt;br /&gt;
		local msg = cfg[&#039;no-content-error&#039;]&lt;br /&gt;
		msg = string.format(&#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;%s&amp;lt;/strong&amp;gt;&#039;, msg)&lt;br /&gt;
		if isCategorized and cfg[&#039;no-content-error-category&#039;] then&lt;br /&gt;
			msg = msg .. makeCategoryLink(cfg[&#039;no-content-error-category&#039;])&lt;br /&gt;
		end&lt;br /&gt;
		return msg&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
	root:wikitext(frame:extensionTag{ name = &#039;templatestyles&#039;, args = { src = &#039;Module:Shortcut/styles.css&#039;} })&lt;br /&gt;
	-- Anchors&lt;br /&gt;
	local anchorDiv = root&lt;br /&gt;
		:tag(&#039;div&#039;)&lt;br /&gt;
			:addClass(&#039;module-shortcutanchordiv&#039;)&lt;br /&gt;
	for i, shortcut in ipairs(shortcuts) do&lt;br /&gt;
		local anchor = mw.uri.anchorEncode(shortcut)&lt;br /&gt;
		anchorDiv:tag(&#039;span&#039;):attr(&#039;id&#039;, anchor)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Shortcut heading&lt;br /&gt;
	local shortcutHeading&lt;br /&gt;
	do&lt;br /&gt;
		local nShortcuts = #shortcuts&lt;br /&gt;
		if nShortcuts &amp;gt; 0 then&lt;br /&gt;
			local headingMsg = options[&#039;shortcut-heading&#039;] or&lt;br /&gt;
				redirectMode and cfg[&#039;redirect-heading&#039;] or&lt;br /&gt;
				cfg[&#039;shortcut-heading&#039;]&lt;br /&gt;
			shortcutHeading = message(headingMsg, nShortcuts)&lt;br /&gt;
			shortcutHeading = frame:preprocess(shortcutHeading)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Shortcut box&lt;br /&gt;
	local shortcutList = root&lt;br /&gt;
		:tag(&#039;div&#039;)&lt;br /&gt;
			:addClass(&#039;module-shortcutboxplain noprint&#039;)&lt;br /&gt;
			:attr(&#039;role&#039;, &#039;note&#039;)&lt;br /&gt;
	if options.float and options.float:lower() == &#039;left&#039; then&lt;br /&gt;
		shortcutList:addClass(&#039;module-shortcutboxleft&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if options.clear and options.clear ~= &#039;&#039; then&lt;br /&gt;
		shortcutList:css(&#039;clear&#039;, options.clear)&lt;br /&gt;
	end&lt;br /&gt;
	if shortcutHeading then&lt;br /&gt;
		shortcutList&lt;br /&gt;
			:tag(&#039;div&#039;)&lt;br /&gt;
				:addClass(&#039;module-shortcutlist&#039;)&lt;br /&gt;
				:wikitext(shortcutHeading)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local ubl = require(&#039;Module:List&#039;).unbulleted(listItems)&lt;br /&gt;
	shortcutList:wikitext(ubl)&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&#039;Module:Arguments&#039;).getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	-- Separate shortcuts from options&lt;br /&gt;
	local shortcuts, options = {}, {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &#039;number&#039; then&lt;br /&gt;
			shortcuts[k] = v&lt;br /&gt;
		else&lt;br /&gt;
			options[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Compress the shortcut array, which may contain nils.&lt;br /&gt;
	local function compressArray(t)&lt;br /&gt;
		local nums, ret = {}, {}&lt;br /&gt;
		for k in pairs(t) do&lt;br /&gt;
			nums[#nums + 1] = k&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(nums)&lt;br /&gt;
		for i, num in ipairs(nums) do&lt;br /&gt;
			ret[i] = t[num]&lt;br /&gt;
		end&lt;br /&gt;
		return ret&lt;br /&gt;
	end&lt;br /&gt;
	shortcuts = compressArray(shortcuts)&lt;br /&gt;
&lt;br /&gt;
	return p._main(shortcuts, options, frame)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Columns-list/doc&amp;diff=18749</id>
		<title>Template:Columns-list/doc</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Columns-list/doc&amp;diff=18749"/>
		<updated>2025-08-13T06:21:48Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Columns-list/doc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- PLEASE ADD CATEGORIES AT THE END OF THIS PAGE --&amp;gt;&lt;br /&gt;
{{Hatnote|{{tl|Collist}} redirects here. You may be looking for {{tl|Collapsible list}}.}}&lt;br /&gt;
{{High-use}}&lt;br /&gt;
{{Tsh|cmn|collist|col-list}}&lt;br /&gt;
{{Lua|Module:Template wrapper|Module:Check for unknown parameters}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Template:Columns-list&#039;&#039;&#039; turns a list into a list with columns. It is a wrapper for {{tl|div col}}, except it wraps the template by allowing for the content to be in the template rather than above and below.&lt;br /&gt;
&lt;br /&gt;
== Use ==&lt;br /&gt;
The width of each column may be specified using {{para|colwidth}} and a value in ems.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;columns-list|colwidth=&#039;&#039;width&#039;&#039;|&lt;br /&gt;
 &#039;&#039;Text (usually a list)&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Here, &#039;&#039;width&#039;&#039; specifies the width of the columns, and determines dynamically the number of columns based on screen width; more columns will be shown on wider displays.&lt;br /&gt;
&lt;br /&gt;
If {{para|colwidth}} is not specified, the default width of 30em will be used. &lt;br /&gt;
&lt;br /&gt;
This template uses [[CSS]]3 multiple-column layout, which is not supported by all web browsers.&lt;br /&gt;
&lt;br /&gt;
{{CSS3 multiple column layout}}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Here is an example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;{{columns-list|colwidth=35em|&lt;br /&gt;
* [[George Washington]]&lt;br /&gt;
* [[John Adams]]&lt;br /&gt;
* [[Thomas Jefferson]]&lt;br /&gt;
* [[James Madison]]&lt;br /&gt;
* [[James Monroe]]&lt;br /&gt;
}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which would render as:&lt;br /&gt;
{{clear}}&amp;lt;!-- just in case {{CSS3 multiple column layout}} pokes down this far --&amp;gt;&lt;br /&gt;
{{columns-list|colwidth=35em|&lt;br /&gt;
* [[George Washington]]&lt;br /&gt;
* [[John Adams]]&lt;br /&gt;
* [[Thomas Jefferson]]&lt;br /&gt;
* [[James Madison]]&lt;br /&gt;
* [[James Monroe]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
HTML classes and CSS styles can also be added with the {{para|class}} and {{para|style}} parameters. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;{{columns-list|colwidth=15em|style=width: 600px; font-style: italic;|&lt;br /&gt;
* [[All About Lily Chou-Chou]]&lt;br /&gt;
* [[April Story]]&lt;br /&gt;
* [[Hana and Alice|Hana &amp;amp; Alice]]&lt;br /&gt;
* [[Hōtai Club]]&lt;br /&gt;
* [[The Kon Ichikawa Story]]&lt;br /&gt;
* [[Love Letter (1995 film)|Love Letter]]&lt;br /&gt;
* [[New York, I Love You]]&lt;br /&gt;
* [[Picnic (1996 film)|Picnic]]&lt;br /&gt;
* [[Rainbow Song]]&lt;br /&gt;
* [[Swallowtail (film)|Swallowtail]]&lt;br /&gt;
}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which would render as:&lt;br /&gt;
{{columns-list|colwidth=15em|style=width: 600px; font-style: italic;|&lt;br /&gt;
* [[All About Lily Chou-Chou]]&lt;br /&gt;
* [[April Story]]&lt;br /&gt;
* [[Hana and Alice|Hana &amp;amp; Alice]]&lt;br /&gt;
* [[Hōtai Club]]&lt;br /&gt;
* [[The Kon Ichikawa Story]]&lt;br /&gt;
* [[Love Letter (1995 film)|Love Letter]]&lt;br /&gt;
* [[New York, I Love You]]&lt;br /&gt;
* [[Picnic (1996 film)|Picnic]]&lt;br /&gt;
* [[Rainbow Song]]&lt;br /&gt;
* [[Swallowtail (film)|Swallowtail]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This template also works with numbered lists as its &amp;quot;text&amp;quot;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{columns-list|colwidth=35em|&lt;br /&gt;
# [[George Washington]]&lt;br /&gt;
# [[John Adams]]&lt;br /&gt;
# [[Thomas Jefferson]]&lt;br /&gt;
# [[James Madison]]&lt;br /&gt;
# [[James Monroe]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{columns-list|colwidth=35em|&lt;br /&gt;
# [[George Washington]]&lt;br /&gt;
# [[John Adams]]&lt;br /&gt;
# [[Thomas Jefferson]]&lt;br /&gt;
# [[James Madison]]&lt;br /&gt;
# [[James Monroe]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The template, in fact, works with &#039;&#039;everything&#039;&#039; since all it does is wrap the text provided around a block to be divided into columns by CSS. Do not stop at wikitext lists{{snd}}more advanced lists generated by [[Template:HTML lists|the HTML templates]] will work too!&lt;br /&gt;
&lt;br /&gt;
==Error messages==&lt;br /&gt;
Use of the no-longer-supported parameter {{para|cols}}, or use of the first unnamed parameter (aka {{para|1}}) along with {{para|2}} or a second unnamed parameter for the template&#039;s content, will generate a red error message. To fix this error, use {{para|colwidth}} instead of attempting to specify the number of columns. &lt;br /&gt;
&lt;br /&gt;
The presence of an equals sign within the template&#039;s content can also cause display problems and red error messages. To fix this problem, add {{para|1}} in front of the template&#039;s content.&lt;br /&gt;
&lt;br /&gt;
This template may cause pages to exceed the [[WP:PEIS|post-expand include size]] limit if used on large lists. If so, use {{tl|div col}} and {{tl|div col end}} instead.&lt;br /&gt;
&lt;br /&gt;
== Redirects ==&lt;br /&gt;
* {{tl|cmn}}&lt;br /&gt;
* {{tl|collist}}&lt;br /&gt;
* {{tl|col-list}}&lt;br /&gt;
* {{tl|Columnslist}}&lt;br /&gt;
&lt;br /&gt;
== Tracking category ==&lt;br /&gt;
* {{clc|Pages using columns-list with unknown parameters}} (for pages in article space only)&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
{{Column-generating template families}}&lt;br /&gt;
{{HTML lists}}&lt;br /&gt;
&amp;lt;!-- == References ==&lt;br /&gt;
{{Reflist}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Categories below this line, please; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Multi-column templates]]&lt;br /&gt;
[[Category:List formatting and function templates]]&lt;br /&gt;
[[Category:Templates that add a tracking category]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&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;Content&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Specifies the content to divide into columns&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;colwidth&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Columns / Column width&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Specifies the width of columns, and determines dynamically the number of columns based on screen width; more columns will be shown on wider displays.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;20em&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot;30&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;description&amp;quot;: &amp;quot;Specifies any custom styling.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;width: 600px; font-style: italic;&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;class&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;HTML class&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Specifies any class or multiple space-delimited classes.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;plainlist nowrap&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;Turns a list into a list with columns. It is a wrapper for {{div col}}, except it wraps the template by allowing for the content to be in the template rather than above and below.&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Columns-list&amp;diff=18747</id>
		<title>Template:Columns-list</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Columns-list&amp;diff=18747"/>
		<updated>2025-08-13T06:21:00Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Columns-list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;#if:{{{1|}}}|{{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;#invoke:Template wrapper|wrap|_template=div col|_alias-map=1:content|colwidth=30em}}}}{{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using columns-list with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Columns-list]] with unknown parameter &amp;quot;_VALUE_&amp;quot;|ignoreblank=y| 1 | class | content | colwidth | gap | rules | small | style }}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Module:Protect&amp;diff=18745</id>
		<title>Module:Protect</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Module:Protect&amp;diff=18745"/>
		<updated>2025-08-13T06:19:44Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Module:Protect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local function processResult(options, success, ...)&lt;br /&gt;
	if not success then&lt;br /&gt;
		local message = tostring(... or &#039;(no message)&#039;)&lt;br /&gt;
		if options.removeLocation then&lt;br /&gt;
			message = string.gsub(message, &#039;^Module:[^:]+:%d+: &#039;, &#039;&#039;, 1)&lt;br /&gt;
		end&lt;br /&gt;
		return string.format(options.errFormat, message)&lt;br /&gt;
	end&lt;br /&gt;
	return ...&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function protect(func, errFormat, options)&lt;br /&gt;
	if type(errFormat) == &#039;table&#039; then&lt;br /&gt;
		options = options or errFormat&lt;br /&gt;
		errFormat = nil&lt;br /&gt;
	end&lt;br /&gt;
	options = mw.clone(options) or {}&lt;br /&gt;
	options.errFormat = errFormat or options.errFormat or &#039;Error: %s&#039;&lt;br /&gt;
	if not options.raw then&lt;br /&gt;
		options.errFormat = &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. options.errFormat .. &#039;&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	options.removeLocation = options.removeLocation == nil or options.removeLocation&lt;br /&gt;
	&lt;br /&gt;
	return function (...)&lt;br /&gt;
		return processResult(options, pcall(func, ...))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return protect&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Module:Template_invocation&amp;diff=18743</id>
		<title>Module:Template invocation</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Module:Template_invocation&amp;diff=18743"/>
		<updated>2025-08-13T06:18:49Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Module:Template_invocation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides functions for making MediaWiki template invocations.&lt;br /&gt;
&lt;br /&gt;
local checkType = require(&#039;libraryUtil&#039;).checkType&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
--         Name:  p.name&lt;br /&gt;
--      Purpose:  Find a template invocation name from a page name or a&lt;br /&gt;
--                mw.title object.&lt;br /&gt;
--  Description:  This function detects whether a string or a mw.title&lt;br /&gt;
--                object has been passed in, and uses that to find a&lt;br /&gt;
--                template name as it is used in template invocations.&lt;br /&gt;
--   Parameters:  title - full page name or mw.title object for the&lt;br /&gt;
--                template (string or mw.title object)&lt;br /&gt;
--      Returns:  String&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.name(title)&lt;br /&gt;
	if type(title) == &#039;string&#039; then&lt;br /&gt;
		title = mw.title.new(title)&lt;br /&gt;
		if not title or #title.prefixedText == 0 or #title.interwiki &amp;gt; 0 then&lt;br /&gt;
			error(&amp;quot;invalid title in parameter #1 of function &#039;name&#039;&amp;quot;, 2)&lt;br /&gt;
		end&lt;br /&gt;
	elseif type(title) ~= &#039;table&#039; or type(title.getContent) ~= &#039;function&#039; then&lt;br /&gt;
		error(&amp;quot;parameter #1 of function &#039;name&#039; must be a string or a mw.title object&amp;quot;, 2)&lt;br /&gt;
	end&lt;br /&gt;
	if title.namespace == 10 then&lt;br /&gt;
		local text = title.text&lt;br /&gt;
		local check = mw.title.new(text, 10)&lt;br /&gt;
		-- Exclude the prefix, unless we have something like &amp;quot;Template:Category:Foo&amp;quot;, which can&#039;t be abbreviated to &amp;quot;Category:Foo&amp;quot;.&lt;br /&gt;
		return check and mw.title.equals(title, check) and text or title.prefixedText&lt;br /&gt;
	elseif title.namespace == 0 then&lt;br /&gt;
		return &#039;:&#039; .. title.prefixedText&lt;br /&gt;
	else&lt;br /&gt;
		return title.prefixedText&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
--         Name:  p.invocation&lt;br /&gt;
--      Purpose:  Construct a MediaWiki template invocation.&lt;br /&gt;
--  Description:  This function makes a template invocation from the&lt;br /&gt;
--                name and the arguments given. Note that it isn&#039;t&lt;br /&gt;
--                perfect: we have no way of knowing what whitespace was&lt;br /&gt;
--                in the original invocation, the named parameters will be&lt;br /&gt;
--                alphabetically sorted, and any parameters with duplicate keys&lt;br /&gt;
--                will be removed.&lt;br /&gt;
--   Parameters:  name - the template name, formatted as it will appear&lt;br /&gt;
--                    in the invocation. (string)&lt;br /&gt;
--                args - a table of template arguments. (table)&lt;br /&gt;
--                format - formatting options. (string, optional)&lt;br /&gt;
--                    Set to &amp;quot;nowiki&amp;quot; to escape, curly braces, pipes and&lt;br /&gt;
--                    equals signs with their HTML entities. The default&lt;br /&gt;
--                    is unescaped.&lt;br /&gt;
--      Returns:  String&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.invocation(name, args, format)&lt;br /&gt;
	checkType(&#039;invocation&#039;, 1, name, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;invocation&#039;, 2, args, &#039;table&#039;)&lt;br /&gt;
	checkType(&#039;invocation&#039;, 3, format, &#039;string&#039;, true)&lt;br /&gt;
&lt;br /&gt;
	-- Validate the args table and make a copy to work from. We need to&lt;br /&gt;
	-- make a copy of the table rather than just using the original, as&lt;br /&gt;
	-- some of the values may be erased when building the invocation.&lt;br /&gt;
	local invArgs = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local typek = type(k)&lt;br /&gt;
		local typev = type(v)&lt;br /&gt;
		if typek ~= &#039;string&#039; and typek ~= &#039;number&#039;&lt;br /&gt;
			or typev ~= &#039;string&#039; and typev ~= &#039;number&#039;&lt;br /&gt;
		then&lt;br /&gt;
			error(&amp;quot;invalid arguments table in parameter #2 of &amp;quot; ..&lt;br /&gt;
			&amp;quot;&#039;invocation&#039; (keys and values must be strings or numbers)&amp;quot;, 2)&lt;br /&gt;
		end&lt;br /&gt;
		invArgs[k] = v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get the separators to use.&lt;br /&gt;
	local seps = {&lt;br /&gt;
		openb = &#039;{{&#039;,&lt;br /&gt;
		closeb = &#039;}}&#039;,&lt;br /&gt;
		pipe = &#039;|&#039;,&lt;br /&gt;
		equals = &#039;=&#039;&lt;br /&gt;
	}&lt;br /&gt;
	if format == &#039;nowiki&#039; then&lt;br /&gt;
		for k, v in pairs(seps) do&lt;br /&gt;
			seps[k] = mw.text.nowiki(v)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Build the invocation body with numbered args first, then named.&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	ret[#ret + 1] = seps.openb&lt;br /&gt;
	ret[#ret + 1] = name&lt;br /&gt;
	for k, v in ipairs(invArgs) do&lt;br /&gt;
		if type(v) == &#039;string&#039; and v:find(&#039;=&#039;, 1, true) then&lt;br /&gt;
			-- Likely something like 1=foo=bar which needs to be displayed as a named arg.&lt;br /&gt;
		else&lt;br /&gt;
			ret[#ret + 1] = seps.pipe&lt;br /&gt;
			ret[#ret + 1] = v&lt;br /&gt;
			invArgs[k] = nil -- Erase the key so that we don&#039;t add the value twice&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local keys = {} -- sort parameter list; better than arbitrary order&lt;br /&gt;
	for k, _ in pairs(invArgs) do&lt;br /&gt;
		keys[#keys + 1] = k&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(keys,&lt;br /&gt;
		function (a, b)&lt;br /&gt;
			-- Sort with keys of type number first, then string.&lt;br /&gt;
			if type(a) == type(b) then&lt;br /&gt;
				return a &amp;lt; b&lt;br /&gt;
			elseif type(a) == &#039;number&#039; then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
	&lt;br /&gt;
	local maybeSpace = &#039;&#039; -- First named parameter should not be separated by a space&lt;br /&gt;
	for _, v in ipairs(keys) do -- Add named args based on sorted parameter list&lt;br /&gt;
		ret[#ret + 1] = maybeSpace .. seps.pipe&lt;br /&gt;
		ret[#ret + 1] = tostring(v)&lt;br /&gt;
		ret[#ret + 1] = seps.equals&lt;br /&gt;
		ret[#ret + 1] = invArgs[v]&lt;br /&gt;
		maybeSpace = &#039; &#039;&lt;br /&gt;
	end&lt;br /&gt;
	ret[#ret + 1] = seps.closeb&lt;br /&gt;
&lt;br /&gt;
	return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Module:Template_test_case/config&amp;diff=18741</id>
		<title>Module:Template test case/config</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Module:Template_test_case/config&amp;diff=18741"/>
		<updated>2025-08-13T06:17:54Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template_test_case/config&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-------------------------------------------------------------------------------&lt;br /&gt;
--                    Module:Template test case/config&lt;br /&gt;
-- This module holds configuration data for [[Module:Template test case]].&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Options&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- The magic word used in place of the template name when making nowiki&lt;br /&gt;
-- invocations.&lt;br /&gt;
templateNameMagicWord = &#039;__TEMPLATENAME__&#039;,&lt;br /&gt;
&lt;br /&gt;
-- The subpage that sandboxes are typically stored on. Used when loading&lt;br /&gt;
-- wrapper template config and when guessing the sandbox template name.&lt;br /&gt;
sandboxSubpage = &#039;sandbox&#039;,&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Messages&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
msg = {&lt;br /&gt;
&lt;br /&gt;
-- The default header for test cases rendered in columns.&lt;br /&gt;
[&#039;columns-header&#039;] = &#039;Side by side comparison&#039;,&lt;br /&gt;
&lt;br /&gt;
-- The error message to use if a template option is missing.&lt;br /&gt;
-- $1 - the number of the missing template option.&lt;br /&gt;
[&#039;missing-template-option-error&#039;] = &amp;quot;one or more options ending in &#039;$1&#039; &amp;quot; ..&lt;br /&gt;
	&amp;quot;were detected, but no &#039;template$1&#039; option was found&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
-- The error message to use if a nowiki invocation is used but the template&lt;br /&gt;
-- name magic word is not found.&lt;br /&gt;
-- $1 - the value of the template name magic word&lt;br /&gt;
[&#039;nowiki-magic-word-error&#039;] = &amp;quot;the template invocation must include &#039;$1&#039; in &amp;quot; ..&lt;br /&gt;
	&amp;quot;place of the template name&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Wrapper template config.&lt;br /&gt;
-- The wrapper template config is a table with wrapper template names as keys,&lt;br /&gt;
-- and subtables containing two fields:&lt;br /&gt;
--   func - the function name to be used with that template. This must be a&lt;br /&gt;
--       function exported by the main module. This is optional: the default&lt;br /&gt;
--       value is &amp;quot;table&amp;quot;.&lt;br /&gt;
--   args - a table of default arguments to be used with that template. This is&lt;br /&gt;
--       is optional.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
wrappers = {&lt;br /&gt;
	[&#039;Template:Test case&#039;] = {},&lt;br /&gt;
	[&#039;Template:Testcase table&#039;] = {&lt;br /&gt;
		args = {_format = &#039;columns&#039;}&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Template:Testcase rows&#039;] = {&lt;br /&gt;
		args = {_format = &#039;rows&#039;}&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Template:Test case nowiki&#039;] = {&lt;br /&gt;
		func = &#039;nowiki&#039;&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Template:Nowiki template demo&#039;] = {&lt;br /&gt;
		func = &#039;nowiki&#039;,&lt;br /&gt;
		args = {showheader = false, showtemplate2 = false}&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Template:Collapsible test case&#039;] = {&lt;br /&gt;
		args = {_collapsible = true}&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Template:Collapsible 2 test case&#039;] = {&lt;br /&gt;
		args = {_collapsible = true, _wantdiff = true}&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Template:Inline test case&#039;] = {&lt;br /&gt;
		args = {_format = &#039;inline&#039;, _showcode = true}&lt;br /&gt;
	},&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- End config&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Module:Template_test_case/data&amp;diff=18739</id>
		<title>Module:Template test case/data</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Module:Template_test_case/data&amp;diff=18739"/>
		<updated>2025-08-13T06:16:56Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template_test_case/data&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module processes configuration data for use in&lt;br /&gt;
-- [[Module:Template test case]]. It is loaded from the main module with&lt;br /&gt;
-- mw.loadData.&lt;br /&gt;
&lt;br /&gt;
local cfg = require(&#039;Module:Template test case/config&#039;)&lt;br /&gt;
&lt;br /&gt;
local function escapePattern(s)&lt;br /&gt;
	s = s:gsub(&#039;%p&#039;, &#039;%%%0&#039;)&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Escape config items that need to be used as patterns. Doing it here is more&lt;br /&gt;
-- efficient, as mw.loadData saves them from having to be computed for every&lt;br /&gt;
-- test case on a page.&lt;br /&gt;
cfg.templateNameMagicWordPattern = escapePattern(cfg.templateNameMagicWord)&lt;br /&gt;
cfg.sandboxSubpagePattern = &#039;/&#039; .. escapePattern(cfg.sandboxSubpage) .. &#039;$&#039;&lt;br /&gt;
&lt;br /&gt;
return cfg&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Module:Template_test_case&amp;diff=18737</id>
		<title>Module:Template test case</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Module:Template_test_case&amp;diff=18737"/>
		<updated>2025-08-13T06:16:15Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Module:Template_test_case&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
   A module for generating test case templates.&lt;br /&gt;
&lt;br /&gt;
   This module incorporates code from the English Wikipedia&#039;s &amp;quot;Testcase table&amp;quot;&lt;br /&gt;
   module,[1] written by Frietjes [2] with contributions by Mr. Stradivarius [3]&lt;br /&gt;
   and Jackmcbarn,[4] and the English Wikipedia&#039;s &amp;quot;Testcase rows&amp;quot; module,[5]&lt;br /&gt;
   written by Mr. Stradivarius.&lt;br /&gt;
&lt;br /&gt;
   The &amp;quot;Testcase table&amp;quot; and &amp;quot;Testcase rows&amp;quot; modules are released under the&lt;br /&gt;
   CC BY-SA 3.0 License [6] and the GFDL.[7]&lt;br /&gt;
&lt;br /&gt;
   License: CC BY-SA 3.0 and the GFDL&lt;br /&gt;
   Author: Mr. Stradivarius&lt;br /&gt;
&lt;br /&gt;
   [1] https://en.wikipedia.org/wiki/Module:Testcase_table&lt;br /&gt;
   [2] https://en.wikipedia.org/wiki/User:Frietjes&lt;br /&gt;
   [3] https://en.wikipedia.org/wiki/User:Mr._Stradivarius&lt;br /&gt;
   [4] https://en.wikipedia.org/wiki/User:Jackmcbarn&lt;br /&gt;
   [5] https://en.wikipedia.org/wiki/Module:Testcase_rows&lt;br /&gt;
   [6] https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License&lt;br /&gt;
   [7] https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
-- Load required modules&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
-- Set constants&lt;br /&gt;
local DATA_MODULE = &#039;Module:Template test case/data&#039;&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Shared methods&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function message(self, key, ...)&lt;br /&gt;
	-- This method is added to classes that need to deal with messages from the&lt;br /&gt;
	-- config module.&lt;br /&gt;
	local msg = self.cfg.msg[key]&lt;br /&gt;
	if select(1, ...) then&lt;br /&gt;
		return mw.message.newRawMessage(msg, ...):plain()&lt;br /&gt;
	else&lt;br /&gt;
		return msg&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Template class&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Template = {}&lt;br /&gt;
&lt;br /&gt;
Template.memoizedMethods = {&lt;br /&gt;
	-- Names of methods to be memoized in each object. This table should only&lt;br /&gt;
	-- hold methods with no parameters.&lt;br /&gt;
	getFullPage = true,&lt;br /&gt;
	getName = true,&lt;br /&gt;
	makeHeader = true,&lt;br /&gt;
	getOutput = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Template.new(invocationObj, options)&lt;br /&gt;
	local obj = {}&lt;br /&gt;
&lt;br /&gt;
	-- Set input&lt;br /&gt;
	for k, v in pairs(options or {}) do&lt;br /&gt;
		if not Template[k] then&lt;br /&gt;
			obj[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	obj._invocation = invocationObj&lt;br /&gt;
&lt;br /&gt;
	-- Validate input&lt;br /&gt;
	if not obj.template and not obj.title then&lt;br /&gt;
		error(&#039;no template or title specified&#039;, 2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Memoize expensive method calls&lt;br /&gt;
	local memoFuncs = {}&lt;br /&gt;
	return setmetatable(obj, {&lt;br /&gt;
		__index = function (t, key)&lt;br /&gt;
			if Template.memoizedMethods[key] then&lt;br /&gt;
				local func = memoFuncs[key]&lt;br /&gt;
				if not func then&lt;br /&gt;
					local val = Template[key](t)&lt;br /&gt;
					func = function () return val end&lt;br /&gt;
					memoFuncs[key] = func&lt;br /&gt;
				end&lt;br /&gt;
				return func&lt;br /&gt;
			else&lt;br /&gt;
				return Template[key]&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Template:getFullPage()&lt;br /&gt;
	if not self.template then&lt;br /&gt;
		return self.title.prefixedText&lt;br /&gt;
	elseif self.template:sub(1, 7) == &#039;#invoke&#039; then&lt;br /&gt;
		return &#039;Module&#039; .. self.template:sub(8):gsub(&#039;|.*&#039;, &#039;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		local strippedTemplate, hasColon = self.template:gsub(&#039;^:&#039;, &#039;&#039;, 1)&lt;br /&gt;
		hasColon = hasColon &amp;gt; 0&lt;br /&gt;
		local ns = strippedTemplate:match(&#039;^(.-):&#039;)&lt;br /&gt;
		ns = ns and mw.site.namespaces[ns]&lt;br /&gt;
		if ns then&lt;br /&gt;
			return strippedTemplate&lt;br /&gt;
		elseif hasColon then&lt;br /&gt;
			return strippedTemplate -- Main namespace&lt;br /&gt;
		else&lt;br /&gt;
			return mw.site.namespaces[10].name .. &#039;:&#039; .. strippedTemplate&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Template:getName()&lt;br /&gt;
	if self.template then&lt;br /&gt;
		return self.template&lt;br /&gt;
	else&lt;br /&gt;
		return require(&#039;Module:Template invocation&#039;).name(self.title)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Template:makeLink(display)&lt;br /&gt;
	if display then&lt;br /&gt;
		return string.format(&#039;[[:%s|%s]]&#039;, self:getFullPage(), display)&lt;br /&gt;
	else&lt;br /&gt;
		return string.format(&#039;[[:%s]]&#039;, self:getFullPage())&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Template:makeBraceLink(display)&lt;br /&gt;
	display = display or self:getName()&lt;br /&gt;
	local link = self:makeLink(display)&lt;br /&gt;
	return mw.text.nowiki(&#039;{{&#039;) .. link .. mw.text.nowiki(&#039;}}&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Template:makeHeader()&lt;br /&gt;
	return self.heading or self:makeBraceLink()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Template:getInvocation(format)&lt;br /&gt;
	local invocation = self._invocation:getInvocation{&lt;br /&gt;
		template = self:getName(),&lt;br /&gt;
		requireMagicWord = self.requireMagicWord,&lt;br /&gt;
	}&lt;br /&gt;
	if format == &#039;code&#039; then&lt;br /&gt;
		invocation = &#039;&amp;lt;code&amp;gt;&#039; .. mw.text.nowiki(invocation) .. &#039;&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
	elseif format == &#039;kbd&#039; then&lt;br /&gt;
		invocation = &#039;&amp;lt;kbd&amp;gt;&#039; .. mw.text.nowiki(invocation) .. &#039;&amp;lt;/kbd&amp;gt;&#039;&lt;br /&gt;
	elseif format == &#039;plain&#039; then&lt;br /&gt;
		invocation = mw.text.nowiki(invocation)&lt;br /&gt;
	else&lt;br /&gt;
		-- Default is pre tags&lt;br /&gt;
		invocation = mw.text.encode(invocation, &#039;&amp;amp;&#039;)&lt;br /&gt;
		invocation = &#039;&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&#039; .. invocation .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
		invocation = mw.getCurrentFrame():preprocess(invocation)&lt;br /&gt;
	end&lt;br /&gt;
	return invocation&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Template:getOutput()&lt;br /&gt;
	local protect = require(&#039;Module:Protect&#039;)&lt;br /&gt;
	-- calling self._invocation:getOutput{...}&lt;br /&gt;
	return protect(self._invocation.getOutput)(self._invocation, {&lt;br /&gt;
		template = self:getName(),&lt;br /&gt;
		requireMagicWord = self.requireMagicWord,&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- TestCase class&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local TestCase = {}&lt;br /&gt;
TestCase.__index = TestCase&lt;br /&gt;
TestCase.message = message -- add the message method&lt;br /&gt;
&lt;br /&gt;
TestCase.renderMethods = {&lt;br /&gt;
	-- Keys in this table are values of the &amp;quot;format&amp;quot; option, values are the&lt;br /&gt;
	-- method for rendering that format.&lt;br /&gt;
	columns = &#039;renderColumns&#039;,&lt;br /&gt;
	rows = &#039;renderRows&#039;,&lt;br /&gt;
	tablerows = &#039;renderRows&#039;,&lt;br /&gt;
	inline = &#039;renderInline&#039;,&lt;br /&gt;
	cells = &#039;renderCells&#039;,&lt;br /&gt;
	default = &#039;renderDefault&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function TestCase.new(invocationObj, options, cfg)&lt;br /&gt;
	local obj = setmetatable({}, TestCase)&lt;br /&gt;
	obj.cfg = cfg&lt;br /&gt;
&lt;br /&gt;
	-- Separate general options from template options. Template options are&lt;br /&gt;
	-- numbered, whereas general options are not.&lt;br /&gt;
	local generalOptions, templateOptions = {}, {}&lt;br /&gt;
	for k, v in pairs(options) do&lt;br /&gt;
		local prefix, num&lt;br /&gt;
		if type(k) == &#039;string&#039; then&lt;br /&gt;
			prefix, num = k:match(&#039;^(.-)([1-9][0-9]*)$&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if prefix then&lt;br /&gt;
			num = tonumber(num)&lt;br /&gt;
			templateOptions[num] = templateOptions[num] or {}&lt;br /&gt;
			templateOptions[num][prefix] = v&lt;br /&gt;
		else&lt;br /&gt;
			generalOptions[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set general options&lt;br /&gt;
	generalOptions.showcode = yesno(generalOptions.showcode)&lt;br /&gt;
	generalOptions.showheader = yesno(generalOptions.showheader) ~= false&lt;br /&gt;
	generalOptions.showcaption = yesno(generalOptions.showcaption) ~= false&lt;br /&gt;
	generalOptions.collapsible = yesno(generalOptions.collapsible)&lt;br /&gt;
	generalOptions.notcollapsed = yesno(generalOptions.notcollapsed)&lt;br /&gt;
	generalOptions.wantdiff = yesno(generalOptions.wantdiff) &lt;br /&gt;
	obj.options = generalOptions&lt;br /&gt;
&lt;br /&gt;
	-- Preprocess template args&lt;br /&gt;
	for num, t in pairs(templateOptions) do&lt;br /&gt;
		if t.showtemplate ~= nil then&lt;br /&gt;
			t.showtemplate = yesno(t.showtemplate)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set up first two template options tables, so that if only the&lt;br /&gt;
	-- &amp;quot;template3&amp;quot; is specified it isn&#039;t made the first template when the&lt;br /&gt;
	-- the table options array is compressed.&lt;br /&gt;
	templateOptions[1] = templateOptions[1] or {}&lt;br /&gt;
	templateOptions[2] = templateOptions[2] or {}&lt;br /&gt;
&lt;br /&gt;
	-- Allow the &amp;quot;template&amp;quot; option to override the &amp;quot;template1&amp;quot; option for&lt;br /&gt;
	-- backwards compatibility with [[Module:Testcase table]].&lt;br /&gt;
	if generalOptions.template then&lt;br /&gt;
		templateOptions[1].template = generalOptions.template&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add default template options&lt;br /&gt;
	if templateOptions[1].template and not templateOptions[2].template then&lt;br /&gt;
		templateOptions[2].template = templateOptions[1].template ..&lt;br /&gt;
			&#039;/&#039; .. obj.cfg.sandboxSubpage&lt;br /&gt;
	end&lt;br /&gt;
	if not templateOptions[1].template then&lt;br /&gt;
		templateOptions[1].title = mw.title.getCurrentTitle().basePageTitle&lt;br /&gt;
	end&lt;br /&gt;
	if not templateOptions[2].template then&lt;br /&gt;
		templateOptions[2].title = templateOptions[1].title:subPageTitle(&lt;br /&gt;
			obj.cfg.sandboxSubpage&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Remove template options for any templates where the showtemplate&lt;br /&gt;
	-- argument is false. This prevents any output for that template.&lt;br /&gt;
	for num, t in pairs(templateOptions) do&lt;br /&gt;
		if t.showtemplate == false then&lt;br /&gt;
			templateOptions[num] = nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Check for missing template names.&lt;br /&gt;
	for num, t in pairs(templateOptions) do&lt;br /&gt;
		if not t.template and not t.title then&lt;br /&gt;
			error(obj:message(&lt;br /&gt;
				&#039;missing-template-option-error&#039;,&lt;br /&gt;
				num, num&lt;br /&gt;
			), 2)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Compress templateOptions table so we can iterate over it with ipairs.&lt;br /&gt;
	templateOptions = (function (t)&lt;br /&gt;
		local nums = {}&lt;br /&gt;
		for num in pairs(t) do&lt;br /&gt;
			nums[#nums + 1] = num&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(nums)&lt;br /&gt;
		local ret = {}&lt;br /&gt;
		for i, num in ipairs(nums) do&lt;br /&gt;
			ret[i] = t[num]&lt;br /&gt;
		end&lt;br /&gt;
		return ret&lt;br /&gt;
	end)(templateOptions)&lt;br /&gt;
&lt;br /&gt;
	-- Don&#039;t require the __TEMPLATENAME__ magic word for nowiki invocations if&lt;br /&gt;
	-- there is only one template being output.&lt;br /&gt;
	if #templateOptions &amp;lt;= 1 then&lt;br /&gt;
		templateOptions[1].requireMagicWord = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	mw.logObject(templateOptions)&lt;br /&gt;
&lt;br /&gt;
	-- Make the template objects&lt;br /&gt;
	obj.templates = {}&lt;br /&gt;
	for i, options in ipairs(templateOptions) do&lt;br /&gt;
		table.insert(obj.templates, Template.new(invocationObj, options))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add tracking categories. At the moment we are only tracking templates&lt;br /&gt;
	-- that use any &amp;quot;heading&amp;quot; parameters or an &amp;quot;output&amp;quot; parameter.&lt;br /&gt;
	obj.categories = {}&lt;br /&gt;
	for k, v in pairs(options) do&lt;br /&gt;
		if type(k) == &#039;string&#039; and k:find(&#039;heading&#039;) then&lt;br /&gt;
			obj.categories[&#039;Test cases using heading parameters&#039;] = true&lt;br /&gt;
		elseif k == &#039;output&#039; then&lt;br /&gt;
			obj.categories[&#039;Test cases using output parameter&#039;] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return obj&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TestCase:getTemplateOutput(templateObj)&lt;br /&gt;
	local output = templateObj:getOutput()&lt;br /&gt;
	if self.options.resetRefs then&lt;br /&gt;
		mw.getCurrentFrame():extensionTag(&#039;references&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TestCase:templateOutputIsEqual()&lt;br /&gt;
	-- Returns a boolean showing whether all of the template outputs are equal.&lt;br /&gt;
	-- The random parts of strip markers (see [[Help:Strip markers]]) are&lt;br /&gt;
	-- removed before comparison. This means a strip marker can contain anything&lt;br /&gt;
	-- and still be treated as equal, but it solves the problem of otherwise&lt;br /&gt;
	-- identical wikitext not returning as exactly equal.&lt;br /&gt;
	local function normaliseOutput(obj)&lt;br /&gt;
		local out = obj:getOutput()&lt;br /&gt;
		-- Remove the random parts from strip markers.&lt;br /&gt;
		out = out:gsub(&#039;(\127[^\127]*UNIQ%-%-%l+%-)%x+(%-%-?QINU[^\127]*\127)&#039;, &#039;%1%2&#039;)&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
	local firstOutput = normaliseOutput(self.templates[1])&lt;br /&gt;
	for i = 2, #self.templates do&lt;br /&gt;
		local output = normaliseOutput(self.templates[i])&lt;br /&gt;
		if output ~= firstOutput then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TestCase:makeCollapsible(s)&lt;br /&gt;
	local title = self.options.title or self.templates[1]:makeHeader()&lt;br /&gt;
	if self.options.titlecode then&lt;br /&gt;
		title = self.templates[1]:getInvocation(&#039;kbd&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local isEqual = self:templateOutputIsEqual()&lt;br /&gt;
	local root = mw.html.create(&#039;div&#039;)&lt;br /&gt;
	root&lt;br /&gt;
		:wikitext(mw.getCurrentFrame():extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;,&lt;br /&gt;
			args = { src = &#039;Module:Template test case/styles.css&#039; },&lt;br /&gt;
		})&lt;br /&gt;
		:addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
		:addClass(&#039;test-case-collapsible&#039;)&lt;br /&gt;
		:addClass(self.options.notcollapsed == false and &#039;mw-collapsed&#039; or nil)&lt;br /&gt;
	if self.options.wantdiff then&lt;br /&gt;
		root&lt;br /&gt;
			:tag(&#039;div&#039;)&lt;br /&gt;
				:addClass(isEqual and &#039;test-case-collapsible-b1&#039; or &#039;test-case-collapsible-b2&#039;)&lt;br /&gt;
				:wikitext(title)&lt;br /&gt;
				:done()&lt;br /&gt;
	else&lt;br /&gt;
		if self.options.notcollapsed ~= true or false then&lt;br /&gt;
			root&lt;br /&gt;
				:addClass(isEqual and &#039;mw-collapsed&#039; or nil)&lt;br /&gt;
		end&lt;br /&gt;
		root&lt;br /&gt;
			:tag(&#039;div&#039;)&lt;br /&gt;
				:addClass(isEqual and &#039;test-case-collapsible-b3&#039; or &#039;test-case-collapsible-b1&#039;)&lt;br /&gt;
				:wikitext(title)&lt;br /&gt;
				:done()&lt;br /&gt;
	end&lt;br /&gt;
	root&lt;br /&gt;
		:tag(&#039;div&#039;)&lt;br /&gt;
			:addClass(&#039;mw-collapsible-content&#039;)&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(s)&lt;br /&gt;
			:newline()&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TestCase:renderColumns()&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
	if self.options.showcode then&lt;br /&gt;
		root&lt;br /&gt;
			:wikitext(self.templates[1]:getInvocation())&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tableroot = root:tag(&#039;table&#039;)&lt;br /&gt;
&lt;br /&gt;
	if self.options.showheader then&lt;br /&gt;
		-- Caption&lt;br /&gt;
		if self.options.showcaption then&lt;br /&gt;
			tableroot&lt;br /&gt;
				:addClass(self.options.class)&lt;br /&gt;
				:cssText(self.options.style)&lt;br /&gt;
				:tag(&#039;caption&#039;)&lt;br /&gt;
					:wikitext(self.options.caption or self:message(&#039;columns-header&#039;))&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Headers&lt;br /&gt;
		local headerRow = tableroot:tag(&#039;tr&#039;)&lt;br /&gt;
		if self.options.rowheader then&lt;br /&gt;
			-- rowheader is correct here. We need to add another th cell if&lt;br /&gt;
			-- rowheader is set further down, even if heading0 is missing.&lt;br /&gt;
			headerRow:tag(&#039;th&#039;):wikitext(self.options.heading0)&lt;br /&gt;
		end&lt;br /&gt;
		local width&lt;br /&gt;
		if #self.templates &amp;gt; 0 then&lt;br /&gt;
			width = tostring(math.floor(100 / #self.templates)) .. &#039;%&#039;&lt;br /&gt;
		else&lt;br /&gt;
			width = &#039;100%&#039;&lt;br /&gt;
		end&lt;br /&gt;
		for i, obj in ipairs(self.templates) do&lt;br /&gt;
			headerRow&lt;br /&gt;
				:tag(&#039;th&#039;)&lt;br /&gt;
					:css(&#039;width&#039;, width)&lt;br /&gt;
					:wikitext(obj:makeHeader())&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Row header&lt;br /&gt;
	local dataRow = tableroot:tag(&#039;tr&#039;):css(&#039;vertical-align&#039;, &#039;top&#039;)&lt;br /&gt;
	if self.options.rowheader then&lt;br /&gt;
		dataRow:tag(&#039;th&#039;)&lt;br /&gt;
			:attr(&#039;scope&#039;, &#039;row&#039;)&lt;br /&gt;
			:wikitext(self.options.rowheader)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Template output&lt;br /&gt;
	for i, obj in ipairs(self.templates) do&lt;br /&gt;
		if self.options.output == &#039;nowiki+&#039; then&lt;br /&gt;
			dataRow:tag(&#039;td&#039;)&lt;br /&gt;
				:newline()&lt;br /&gt;
				:wikitext(self.options.before)&lt;br /&gt;
				:wikitext(self:getTemplateOutput(obj))&lt;br /&gt;
				:wikitext(self.options.after)&lt;br /&gt;
				:wikitext(&#039;&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
				:wikitext(mw.text.nowiki(self.options.before or &amp;quot;&amp;quot;))&lt;br /&gt;
				:wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))&lt;br /&gt;
				:wikitext(mw.text.nowiki(self.options.after or &amp;quot;&amp;quot;))&lt;br /&gt;
				:wikitext(&#039;&amp;lt;/pre&amp;gt;&#039;)&lt;br /&gt;
		elseif self.options.output == &#039;nowiki&#039; then&lt;br /&gt;
			dataRow:tag(&#039;td&#039;)&lt;br /&gt;
				:newline()&lt;br /&gt;
				:wikitext(mw.text.nowiki(self.options.before or &amp;quot;&amp;quot;))&lt;br /&gt;
				:wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))&lt;br /&gt;
				:wikitext(mw.text.nowiki(self.options.after or &amp;quot;&amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			dataRow:tag(&#039;td&#039;)&lt;br /&gt;
				:newline()&lt;br /&gt;
				:wikitext(self.options.before)&lt;br /&gt;
				:wikitext(self:getTemplateOutput(obj))&lt;br /&gt;
				:wikitext(self.options.after)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TestCase:renderRows()&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
	if self.options.showcode then&lt;br /&gt;
		root&lt;br /&gt;
			:wikitext(self.templates[1]:getInvocation())&lt;br /&gt;
			:newline()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tableroot = root:tag(&#039;table&#039;)&lt;br /&gt;
	tableroot&lt;br /&gt;
		:addClass(self.options.class)&lt;br /&gt;
		:cssText(self.options.style)&lt;br /&gt;
&lt;br /&gt;
	if self.options.caption then&lt;br /&gt;
		tableroot&lt;br /&gt;
			:tag(&#039;caption&#039;)&lt;br /&gt;
				:wikitext(self.options.caption)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, obj in ipairs(self.templates) do&lt;br /&gt;
		local dataRow = tableroot:tag(&#039;tr&#039;)&lt;br /&gt;
		&lt;br /&gt;
		-- Header&lt;br /&gt;
		if self.options.showheader then&lt;br /&gt;
			if self.options.format == &#039;tablerows&#039; then&lt;br /&gt;
				dataRow:tag(&#039;th&#039;)&lt;br /&gt;
					:attr(&#039;scope&#039;, &#039;row&#039;)&lt;br /&gt;
					:css(&#039;vertical-align&#039;, &#039;top&#039;)&lt;br /&gt;
					:css(&#039;text-align&#039;, &#039;left&#039;)&lt;br /&gt;
					:wikitext(obj:makeHeader())&lt;br /&gt;
				dataRow:tag(&#039;td&#039;)&lt;br /&gt;
					:css(&#039;vertical-align&#039;, &#039;top&#039;)&lt;br /&gt;
					:css(&#039;padding&#039;, &#039;0 1em&#039;)&lt;br /&gt;
					:wikitext(&#039;→&#039;)&lt;br /&gt;
			else&lt;br /&gt;
				dataRow:tag(&#039;td&#039;)&lt;br /&gt;
					:css(&#039;text-align&#039;, &#039;center&#039;)&lt;br /&gt;
					:css(&#039;font-weight&#039;, &#039;bold&#039;)&lt;br /&gt;
					:wikitext(obj:makeHeader())&lt;br /&gt;
				dataRow = tableroot:tag(&#039;tr&#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Template output&lt;br /&gt;
		if self.options.output == &#039;nowiki+&#039; then&lt;br /&gt;
			dataRow:tag(&#039;td&#039;)&lt;br /&gt;
				:newline()&lt;br /&gt;
                :wikitext(self.options.before)&lt;br /&gt;
                :wikitext(self:getTemplateOutput(obj))&lt;br /&gt;
                :wikitext(self.options.after)&lt;br /&gt;
                :wikitext(&#039;&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
                :wikitext(mw.text.nowiki(self.options.before or &amp;quot;&amp;quot;))&lt;br /&gt;
                :wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))&lt;br /&gt;
                :wikitext(mw.text.nowiki(self.options.after or &amp;quot;&amp;quot;))&lt;br /&gt;
                :wikitext(&#039;&amp;lt;/pre&amp;gt;&#039;)&lt;br /&gt;
		elseif self.options.output == &#039;nowiki&#039; then&lt;br /&gt;
			dataRow:tag(&#039;td&#039;)&lt;br /&gt;
				:newline()&lt;br /&gt;
				:wikitext(mw.text.nowiki(self.options.before or &amp;quot;&amp;quot;))&lt;br /&gt;
				:wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))&lt;br /&gt;
				:wikitext(mw.text.nowiki(self.options.after or &amp;quot;&amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			dataRow:tag(&#039;td&#039;)&lt;br /&gt;
				:newline()&lt;br /&gt;
				:wikitext(self.options.before)&lt;br /&gt;
				:wikitext(self:getTemplateOutput(obj))&lt;br /&gt;
				:wikitext(self.options.after)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TestCase:renderInline()&lt;br /&gt;
	local arrow = mw.language.getContentLanguage():getArrow(&#039;forwards&#039;)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, obj in ipairs(self.templates) do&lt;br /&gt;
		local line = {}&lt;br /&gt;
		line[#line + 1] = self.options.prefix or &#039;* &#039;&lt;br /&gt;
		if self.options.showcode then&lt;br /&gt;
			line[#line + 1] = obj:getInvocation(&#039;code&#039;)&lt;br /&gt;
			line[#line + 1] = &#039; &#039;&lt;br /&gt;
			line[#line + 1] = arrow&lt;br /&gt;
			line[#line + 1] = &#039; &#039;&lt;br /&gt;
		end&lt;br /&gt;
		if self.options.output == &#039;nowiki+&#039; then&lt;br /&gt;
			line[#line + 1] = self.options.before or &amp;quot;&amp;quot;&lt;br /&gt;
			line[#line + 1] = self:getTemplateOutput(obj)&lt;br /&gt;
			line[#line + 1] = self.options.after or &amp;quot;&amp;quot;&lt;br /&gt;
			line[#line + 1] = &#039;&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			line[#line + 1] = mw.text.nowiki(self.options.before or &amp;quot;&amp;quot;)&lt;br /&gt;
			line[#line + 1] = mw.text.nowiki(self:getTemplateOutput(obj))&lt;br /&gt;
			line[#line + 1] = mw.text.nowiki(self.options.after or &amp;quot;&amp;quot;)&lt;br /&gt;
			line[#line + 1] = &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
		elseif self.options.output == &#039;nowiki&#039; then&lt;br /&gt;
			line[#line + 1] = mw.text.nowiki(self.options.before or &amp;quot;&amp;quot;)&lt;br /&gt;
			line[#line + 1] = mw.text.nowiki(self:getTemplateOutput(obj))&lt;br /&gt;
			line[#line + 1] = mw.text.nowiki(self.options.after or &amp;quot;&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			line[#line + 1] = self.options.before or &amp;quot;&amp;quot;&lt;br /&gt;
			line[#line + 1] = self:getTemplateOutput(obj)&lt;br /&gt;
			line[#line + 1] = self.options.after or &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		ret[#ret + 1] = table.concat(line)&lt;br /&gt;
	end&lt;br /&gt;
	if self.options.addline then&lt;br /&gt;
		local line = {}&lt;br /&gt;
		line[#line + 1] = self.options.prefix or &#039;* &#039;&lt;br /&gt;
		line[#line + 1] = self.options.addline&lt;br /&gt;
		ret[#ret + 1] = table.concat(line)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TestCase:renderCells()&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
	local dataRow = root:tag(&#039;tr&#039;)&lt;br /&gt;
	dataRow&lt;br /&gt;
		:css(&#039;vertical-align&#039;, &#039;top&#039;)&lt;br /&gt;
		:addClass(self.options.class)&lt;br /&gt;
		:cssText(self.options.style)&lt;br /&gt;
&lt;br /&gt;
	-- Row header&lt;br /&gt;
	if self.options.rowheader then&lt;br /&gt;
		dataRow:tag(&#039;th&#039;)&lt;br /&gt;
			:attr(&#039;scope&#039;, &#039;row&#039;)&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(self.options.rowheader or self:message(&#039;row-header&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	-- Caption&lt;br /&gt;
	if self.options.showcaption then&lt;br /&gt;
		dataRow:tag(&#039;th&#039;)&lt;br /&gt;
			:attr(&#039;scope&#039;, &#039;row&#039;)&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(self.options.caption or self:message(&#039;columns-header&#039;))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Show code&lt;br /&gt;
	if self.options.showcode then&lt;br /&gt;
		dataRow:tag(&#039;td&#039;)&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(self:getInvocation(&#039;code&#039;))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Template output&lt;br /&gt;
	for i, obj in ipairs(self.templates) do&lt;br /&gt;
		if self.options.output == &#039;nowiki+&#039; then&lt;br /&gt;
			dataRow:tag(&#039;td&#039;)&lt;br /&gt;
				:newline()&lt;br /&gt;
				:wikitext(self.options.before)&lt;br /&gt;
				:wikitext(self:getTemplateOutput(obj))&lt;br /&gt;
				:wikitext(self.options.after)&lt;br /&gt;
				:wikitext(&#039;&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
				:wikitext(mw.text.nowiki(self.options.before or &amp;quot;&amp;quot;))&lt;br /&gt;
				:wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))&lt;br /&gt;
				:wikitext(mw.text.nowiki(self.options.after or &amp;quot;&amp;quot;))&lt;br /&gt;
				:wikitext(&#039;&amp;lt;/pre&amp;gt;&#039;)&lt;br /&gt;
		elseif self.options.output == &#039;nowiki&#039; then&lt;br /&gt;
			dataRow:tag(&#039;td&#039;)&lt;br /&gt;
				:newline()&lt;br /&gt;
				:wikitext(mw.text.nowiki(self.options.before or &amp;quot;&amp;quot;))&lt;br /&gt;
				:wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))&lt;br /&gt;
				:wikitext(mw.text.nowiki(self.options.after or &amp;quot;&amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			dataRow:tag(&#039;td&#039;)&lt;br /&gt;
				:newline()&lt;br /&gt;
				:wikitext(self.options.before)&lt;br /&gt;
				:wikitext(self:getTemplateOutput(obj))&lt;br /&gt;
				:wikitext(self.options.after)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TestCase:renderDefault()&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	if self.options.showcode then&lt;br /&gt;
		ret[#ret + 1] = self.templates[1]:getInvocation()&lt;br /&gt;
	end&lt;br /&gt;
	for i, obj in ipairs(self.templates) do&lt;br /&gt;
		ret[#ret + 1] = &#039;&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		if self.options.showheader then&lt;br /&gt;
			ret[#ret + 1] = obj:makeHeader()&lt;br /&gt;
		end&lt;br /&gt;
		if self.options.output == &#039;nowiki+&#039; then&lt;br /&gt;
			ret[#ret + 1] = (self.options.before or &amp;quot;&amp;quot;) ..&lt;br /&gt;
			self:getTemplateOutput(obj) ..&lt;br /&gt;
			(self.options.after or &amp;quot;&amp;quot;) ..&lt;br /&gt;
			&#039;&amp;lt;pre style=&amp;quot;white-space: pre-wrap;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
			mw.text.nowiki(self.options.before or &amp;quot;&amp;quot;) ..&lt;br /&gt;
			mw.text.nowiki(self:getTemplateOutput(obj)) ..&lt;br /&gt;
			mw.text.nowiki(self.options.after or &amp;quot;&amp;quot;) .. &#039;&amp;lt;/pre&amp;gt;&#039;&lt;br /&gt;
		elseif self.options.output == &#039;nowiki&#039; then&lt;br /&gt;
			ret[#ret + 1] = mw.text.nowiki(self.options.before or &amp;quot;&amp;quot;) ..&lt;br /&gt;
			mw.text.nowiki(self:getTemplateOutput(obj)) ..&lt;br /&gt;
			mw.text.nowiki(self.options.after or &amp;quot;&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			ret[#ret + 1] = (self.options.before or &amp;quot;&amp;quot;) ..&lt;br /&gt;
			self:getTemplateOutput(obj) ..&lt;br /&gt;
			(self.options.after or &amp;quot;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret, &#039;\n\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TestCase:__tostring()&lt;br /&gt;
	local format = self.options.format&lt;br /&gt;
	local method = format and TestCase.renderMethods[format] or &#039;renderDefault&#039;&lt;br /&gt;
	local ret = self[method](self)&lt;br /&gt;
	if self.options.collapsible then&lt;br /&gt;
		ret = self:makeCollapsible(ret)&lt;br /&gt;
	end&lt;br /&gt;
	for cat in pairs(self.categories) do&lt;br /&gt;
		ret = ret .. string.format(&#039;[[Category:%s]]&#039;, cat)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Nowiki invocation class&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local NowikiInvocation = {}&lt;br /&gt;
NowikiInvocation.__index = NowikiInvocation&lt;br /&gt;
NowikiInvocation.message = message -- Add the message method&lt;br /&gt;
&lt;br /&gt;
function NowikiInvocation.new(invocation, cfg)&lt;br /&gt;
	local obj = setmetatable({}, NowikiInvocation)&lt;br /&gt;
	obj.cfg = cfg&lt;br /&gt;
	invocation = mw.text.unstrip(invocation)&lt;br /&gt;
	-- Decode HTML entities for &amp;lt;, &amp;gt;, and &amp;quot;. This means that HTML entities in&lt;br /&gt;
	-- the original code must be escaped as e.g. &amp;amp;amp;lt;, which is unfortunate,&lt;br /&gt;
	-- but it is the best we can do as the distinction between &amp;lt;, &amp;gt;, &amp;quot; and &amp;amp;lt;,&lt;br /&gt;
	-- &amp;amp;gt;, &amp;amp;quot; is lost during the original nowiki operation.&lt;br /&gt;
	invocation = invocation:gsub(&#039;&amp;amp;lt;&#039;, &#039;&amp;lt;&#039;)&lt;br /&gt;
	invocation = invocation:gsub(&#039;&amp;amp;gt;&#039;, &#039;&amp;gt;&#039;)&lt;br /&gt;
	invocation = invocation:gsub(&#039;&amp;amp;quot;&#039;, &#039;&amp;quot;&#039;)&lt;br /&gt;
	obj.invocation = invocation&lt;br /&gt;
	return obj&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function NowikiInvocation:getInvocation(options)&lt;br /&gt;
	local template = options.template:gsub(&#039;%%&#039;, &#039;%%%%&#039;) -- Escape &amp;quot;%&amp;quot; with &amp;quot;%%&amp;quot;&lt;br /&gt;
	local invocation, count = self.invocation:gsub(&lt;br /&gt;
		self.cfg.templateNameMagicWordPattern,&lt;br /&gt;
		template&lt;br /&gt;
	)&lt;br /&gt;
	if options.requireMagicWord ~= false and count &amp;lt; 1 then&lt;br /&gt;
		error(self:message(&lt;br /&gt;
			&#039;nowiki-magic-word-error&#039;,&lt;br /&gt;
			self.cfg.templateNameMagicWord&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
	return invocation&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function NowikiInvocation:getOutput(options)&lt;br /&gt;
	local invocation = self:getInvocation(options)&lt;br /&gt;
	return mw.getCurrentFrame():preprocess(invocation)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Table invocation class&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local TableInvocation = {}&lt;br /&gt;
TableInvocation.__index = TableInvocation&lt;br /&gt;
TableInvocation.message = message -- Add the message method&lt;br /&gt;
&lt;br /&gt;
function TableInvocation.new(invokeArgs, nowikiCode, cfg)&lt;br /&gt;
	local obj = setmetatable({}, TableInvocation)&lt;br /&gt;
	obj.cfg = cfg&lt;br /&gt;
	obj.invokeArgs = invokeArgs&lt;br /&gt;
	obj.code = nowikiCode&lt;br /&gt;
	return obj&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TableInvocation:getInvocation(options)&lt;br /&gt;
	if self.code then&lt;br /&gt;
		local nowikiObj = NowikiInvocation.new(self.code, self.cfg)&lt;br /&gt;
		return nowikiObj:getInvocation(options)&lt;br /&gt;
	else&lt;br /&gt;
		return require(&#039;Module:Template invocation&#039;).invocation(&lt;br /&gt;
			options.template,&lt;br /&gt;
			self.invokeArgs&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TableInvocation:getOutput(options)&lt;br /&gt;
	if (options.template:sub(1, 7) == &#039;#invoke&#039;) then&lt;br /&gt;
		local moduleCall = mw.text.split(options.template, &#039;|&#039;, true)&lt;br /&gt;
		local args = mw.clone(self.invokeArgs)&lt;br /&gt;
		table.insert(args, 1, moduleCall[2])&lt;br /&gt;
		return mw.getCurrentFrame():callParserFunction(moduleCall[1], args)&lt;br /&gt;
	end&lt;br /&gt;
	return mw.getCurrentFrame():expandTemplate{&lt;br /&gt;
		title = options.template,&lt;br /&gt;
		args = self.invokeArgs&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
-- Bridge functions&lt;br /&gt;
--&lt;br /&gt;
-- These functions translate template arguments into forms that can be accepted&lt;br /&gt;
-- by the different classes, and return the results.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local bridge = {}&lt;br /&gt;
&lt;br /&gt;
function bridge.table(args, cfg)&lt;br /&gt;
	cfg = cfg or mw.loadData(DATA_MODULE)&lt;br /&gt;
&lt;br /&gt;
	local options, invokeArgs = {}, {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local optionKey = type(k) == &#039;string&#039; and k:match(&#039;^_(.*)$&#039;)&lt;br /&gt;
		if optionKey then&lt;br /&gt;
			if type(v) == &#039;string&#039; then&lt;br /&gt;
				v = v:match(&#039;^%s*(.-)%s*$&#039;) -- trim whitespace&lt;br /&gt;
			end&lt;br /&gt;
			if v ~= &#039;&#039; then&lt;br /&gt;
				options[optionKey] = v&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			invokeArgs[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Allow passing a nowiki invocation as an option. While this means users&lt;br /&gt;
	-- have to pass in the code twice, whitespace is preserved and &amp;amp;lt; etc.&lt;br /&gt;
	-- will work as intended.&lt;br /&gt;
	local nowikiCode = options.code&lt;br /&gt;
	options.code = nil&lt;br /&gt;
&lt;br /&gt;
	local invocationObj = TableInvocation.new(invokeArgs, nowikiCode, cfg)&lt;br /&gt;
	local testCaseObj = TestCase.new(invocationObj, options, cfg)&lt;br /&gt;
	return tostring(testCaseObj)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function bridge.nowiki(args, cfg)&lt;br /&gt;
	cfg = cfg or mw.loadData(DATA_MODULE)&lt;br /&gt;
	&lt;br /&gt;
	-- Convert args beginning with _ for consistency with the normal bridge&lt;br /&gt;
	local newArgs = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local normalName = type(k) == &amp;quot;string&amp;quot; and string.match(k, &amp;quot;^_(.*)$&amp;quot;)&lt;br /&gt;
		if normalName then&lt;br /&gt;
			newArgs[normalName] = v&lt;br /&gt;
		else&lt;br /&gt;
			newArgs[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local code = newArgs.code or newArgs[1]&lt;br /&gt;
	local invocationObj = NowikiInvocation.new(code, cfg)&lt;br /&gt;
	newArgs.code = nil&lt;br /&gt;
	newArgs[1] = nil&lt;br /&gt;
	-- Assume we want to see the code as we already passed it in.&lt;br /&gt;
	newArgs.showcode = newArgs.showcode or true&lt;br /&gt;
	local testCaseObj = TestCase.new(invocationObj, newArgs, cfg)&lt;br /&gt;
	return tostring(testCaseObj)&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;
function p.main(frame, cfg)&lt;br /&gt;
	cfg = cfg or mw.loadData(DATA_MODULE)&lt;br /&gt;
&lt;br /&gt;
	-- Load the wrapper config, if any.&lt;br /&gt;
	local wrapperConfig&lt;br /&gt;
	if frame.getParent then&lt;br /&gt;
		local title = frame:getParent():getTitle()&lt;br /&gt;
		local template = title:gsub(cfg.sandboxSubpagePattern, &#039;&#039;)&lt;br /&gt;
		wrapperConfig = cfg.wrappers[template]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Work out the function we will call, use it to generate the config for&lt;br /&gt;
	-- Module:Arguments, and use Module:Arguments to find the arguments passed&lt;br /&gt;
	-- by the user.&lt;br /&gt;
	local func = wrapperConfig and wrapperConfig.func or &#039;table&#039;&lt;br /&gt;
	local userArgs = require(&#039;Module:Arguments&#039;).getArgs(frame, {&lt;br /&gt;
		parentOnly = wrapperConfig,&lt;br /&gt;
		frameOnly = not wrapperConfig,&lt;br /&gt;
		trim = func ~= &#039;table&#039;,&lt;br /&gt;
		removeBlanks = func ~= &#039;table&#039;&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	-- Get default args and build the args table. User-specified args overwrite&lt;br /&gt;
	-- default args.&lt;br /&gt;
	local defaultArgs = wrapperConfig and wrapperConfig.args or {}&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(defaultArgs) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(userArgs) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return bridge[func](args, cfg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._exportClasses() -- For testing&lt;br /&gt;
	return {&lt;br /&gt;
		Template = Template,&lt;br /&gt;
		TestCase = TestCase,&lt;br /&gt;
		NowikiInvocation = NowikiInvocation,&lt;br /&gt;
		TableInvocation = TableInvocation&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Nowiki_template_demo/doc&amp;diff=18735</id>
		<title>Template:Nowiki template demo/doc</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Nowiki_template_demo/doc&amp;diff=18735"/>
		<updated>2025-08-13T06:15:09Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Nowiki_template_demo/doc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
{{lua|Module:Template test case}}&lt;br /&gt;
&amp;lt;!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This template shows a template invocation together with a demonstration of that template&#039;s output. The template arguments are passed in once, inside {{tag|nowiki}} tags, and are used to generate both the template invocation and the template output. The demonstration can be displayed in various different formats.&lt;br /&gt;
&lt;br /&gt;
This template is identical to {{tl|test case nowiki}} with the {{para|showtemplate2}} and {{para|showheader}} parameters both set to &amp;quot;no&amp;quot;. To see the full range of options available, please see the [[Template:Test case nowiki/doc|test case nowiki documentation]].&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
===Basic syntax===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot; style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{{nowiki template demo|&amp;lt;nowiki&amp;gt;{{[template name]&lt;br /&gt;
| [param1] = [value1]&lt;br /&gt;
| [param2] = [value2]&lt;br /&gt;
| [param3] = [value3]&lt;br /&gt;
...&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Or --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{nowiki template demo|&amp;lt;nowiki&amp;gt;{{&amp;lt;!-- template name with parameters --&amp;gt;}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Common syntax===&lt;br /&gt;
The following options will work with all different test case formats.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot; style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{{nowiki template demo&lt;br /&gt;
| format      = &lt;br /&gt;
| collapsible = &lt;br /&gt;
| resetRefs   = &lt;br /&gt;
| showcode    = &lt;br /&gt;
| showheader  = &lt;br /&gt;
| code        = &amp;lt;nowiki&amp;gt;{{[template name]&lt;br /&gt;
| [param1] = [value1]&lt;br /&gt;
| [param2] = [value2]&lt;br /&gt;
| [param3] = [value3]&lt;br /&gt;
...&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some test case formats accept additional parameters as well. See their sections for documentation.&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Common parameters&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || The template code, inside {{tag|nowiki}} tags. You must use the magic word &amp;quot;__TEMPLATENAME__&amp;quot; instead of the template name. For example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;| code = &amp;amp;lt;nowiki&amp;amp;gt;{{__TEMPLATENAME__|first|second|foo=bar}}&amp;amp;lt;/nowiki&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. &amp;lt;p&amp;gt;Note: due to the way nowiki tags work, the template treats the [[HTML entities]] &amp;amp;amp;lt;, &amp;amp;amp;gt; and &amp;amp;amp;quot; as if they were the literal characters &amp;amp;lt;, &amp;amp;gt; and &amp;amp;quot; when used with this parameter.&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;format&amp;lt;/code&amp;gt; || The format to display the test cases in. This can be &amp;quot;default&amp;quot;, &amp;quot;inline&amp;quot;, &amp;quot;columns&amp;quot; or &amp;quot;rows&amp;quot;. The inline format is for templates that can be displayed entirely on one line. If used with templates that display on multiple lines it may produce unexpected results. The &amp;quot;columns&amp;quot; and &amp;quot;rows&amp;quot; formats are intended for displaying multiple templates in a table, so they are not of much use here. See the [[Template:Test case nowiki/doc|test case nowiki documentation]] for more information about them.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;heading1&amp;lt;/code&amp;gt; || A custom heading for the template.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;showheader&amp;lt;/code&amp;gt; || If this is set to &amp;quot;no&amp;quot;, then no headers are shown.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;collapsible&amp;lt;/code&amp;gt; || If set to &amp;quot;yes&amp;quot;, the demonstration is made collapsible. It is collapsed by default.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;resetRefs&amp;lt;/code&amp;gt; || If set to &amp;quot;yes&amp;quot;, any references generated by the templates tested are reset after each template is expanded.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;showcode&amp;lt;/code&amp;gt; || Set this to &amp;quot;no&amp;quot; to disable display of the template invocation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can use {{para|collapsible|yes}} with any format to collapse it. You can set a custom title for collapsible test cases with the {{para|title}} parameter.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Default ===&lt;br /&gt;
====Usage====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot; style=&amp;quot;white-space:pre-wrap; overflow:auto; background-color:#eee;&amp;quot;&amp;gt;&lt;br /&gt;
{{nowiki template demo|code=&amp;lt;nowiki&amp;gt;{{ombox|text=Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Output====&lt;br /&gt;
{{nowiki template demo|code=&amp;lt;nowiki&amp;gt;{{ombox|text=Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Default, collapsible ===&lt;br /&gt;
====Usage====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot; style=&amp;quot;white-space:pre-wrap; overflow:auto; background-color:#eee;&amp;quot;&amp;gt;&lt;br /&gt;
{{nowiki template demo|collapsible=yes|&amp;lt;nowiki&amp;gt;{{ombox|text=Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Output====&lt;br /&gt;
{{nowiki template demo|collapsible=yes|&amp;lt;nowiki&amp;gt;{{ombox|text=Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Inline ===&lt;br /&gt;
using [[Template:3x]]&lt;br /&gt;
====Usage====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot; style=&amp;quot;white-space:pre-wrap; overflow:auto; background-color:#eee;&amp;quot;&amp;gt;&lt;br /&gt;
{{nowiki template demo|format=inline|code=&amp;lt;nowiki&amp;gt;{{3x|Lorem ipsum}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Output====&lt;br /&gt;
{{nowiki template demo|format=inline|code=&amp;lt;nowiki&amp;gt;{{3x|Lorem ipsum}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Note: As this format starts with a bullet, a newline will always be inserted at the start of the template output due to [[phab:T14974|bug 14974]].&lt;br /&gt;
&lt;br /&gt;
=== Inline with nowiki output ===&lt;br /&gt;
using [[Template:URL]]&lt;br /&gt;
====Usage====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot; style=&amp;quot;white-space:pre-wrap; overflow:auto; background-color:#eee;&amp;quot;&amp;gt;&lt;br /&gt;
{{nowiki template demo|format=inline|output=nowiki+|code=&amp;lt;nowiki&amp;gt;{{URL | 1= http://www.example.com/path?section=17 }}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Output====&lt;br /&gt;
{{nowiki template demo|format=inline|output=nowiki+|code=&amp;lt;nowiki&amp;gt;{{URL | 1= http://www.example.com/path?section=17 }}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Technical limitations ==&lt;br /&gt;
&lt;br /&gt;
The template has the following known technical limitations:&lt;br /&gt;
* An error will be generated if processing the entire page takes more than 10 seconds. This is an intentional limit in the [[mw:Extension:Scribunto|Scribunto]] extension that runs [[Module:Template test case]], on which this template is based. If a test cases page takes more than 10 seconds to load, you may need to split it up into different pages.&lt;br /&gt;
* The template converts the [[HTML entities]] &amp;amp;amp;lt;, &amp;amp;amp;gt; and &amp;amp;amp;quot; inside template invocations to the literal characters &amp;amp;lt;, &amp;amp;gt; and &amp;amp;quot;. This is due to the way nowiki tags work.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
Similar templates:&lt;br /&gt;
* [[Template:Demo]] and [[Template:Demo-inline]] which use [[Module:Demo]]&lt;br /&gt;
* [[Template:Automarkup]] which uses [[Module:Automarkup]]&lt;br /&gt;
&lt;br /&gt;
Templates invoking [[Module:Template test case]]:&lt;br /&gt;
* [[Template:Test case]] – a generalised test case template&lt;br /&gt;
* [[Template:Testcase rows]] – for a table of test cases arranged in rows&lt;br /&gt;
* [[Template:Testcase table]] – for a table of test cases arranged in columns&lt;br /&gt;
* [[Template:Inline test case]] – for test cases with small invocations and small output&lt;br /&gt;
* [[Template:Collapsible test case]] – for test cases collapsed by default if the results are the same&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line, please; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Documentation assistance templates]]&lt;br /&gt;
[[Category:Programming typing-aid templates]]&lt;br /&gt;
[[Category:Template test cases| ]]&lt;br /&gt;
[[Category:Nowiki templates]]&lt;br /&gt;
[[Category:Wikitext processing templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Nowiki_template_demo&amp;diff=18734</id>
		<title>Template:Nowiki template demo</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Nowiki_template_demo&amp;diff=18734"/>
		<updated>2025-08-13T06:14:21Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Nowiki_template_demo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Template test case|main}}&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>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:High-use/doc&amp;diff=18732</id>
		<title>Template:High-use/doc</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:High-use/doc&amp;diff=18732"/>
		<updated>2025-08-13T06:13:20Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:High-use/doc&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;
{{High-use}}&lt;br /&gt;
{{lua|Module:High-use}}&lt;br /&gt;
This is the {{tlx|high-use}} message box.&lt;br /&gt;
&lt;br /&gt;
It is meant to be put at the top of the documentation subpage for templates transcluded onto more than 2,000 pages. For templates transcluded onto more than 100,000 pages, or if the first parameter is set to &amp;lt;code&amp;gt;risk&amp;lt;/code&amp;gt;, a stronger wording is given. See [[Wikipedia:High-risk templates]] for background information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: It is normal for some of the links in the message box to be red.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
{{tlx |High-use}}&lt;br /&gt;
&lt;br /&gt;
{{tlx |High-use |2=2=&#039;&#039;discussion page, or use + notation&#039;&#039; |3=info=&#039;&#039;additional text&#039;&#039; }}&lt;br /&gt;
&lt;br /&gt;
; all parameters&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{{High-use |1= |2= |info= |demo= |form= |expiry= }}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The template can be used as is, and will automatically use bot-updated transclusion counts from [[Special:PrefixIndex/Module:Transclusion_count/data/|subpages of Module:Transclusion_count/data/]], when available. It can also take some parameters:&lt;br /&gt;
* &amp;lt;code&amp;gt;1=&#039;&#039;number of transclusions&#039;&#039;&amp;lt;/code&amp;gt;: &#039;&#039;(deprecated)&#039;&#039; The first parameter is either a static number of times the template has been transcluded, or the word &amp;quot;risk&amp;quot; (without quotes) to display &amp;quot;a very large number of&amp;quot; instead of the actual value. This value will be ignored, if transclusion data is available for the current page (generally, for templates with more than 2,000 transclusions).&lt;br /&gt;
* &amp;lt;code&amp;gt;2=&#039;&#039;discussion page, or use + notation&#039;&#039;&amp;lt;/code&amp;gt;: The second parameter is overloaded. It will cause the number of transclusions to display as &amp;quot;#,###+&amp;quot; instead of &amp;quot;approximately #,###&amp;quot; when set equal to &amp;quot;yes&amp;quot; (without quotes). When used in this manner, values will be rounded down, instead of rounded to the nearest number with the appropriate number of significant figures. When set to any other non-blank value, it will replace the link to the template&#039;s talk page to the value of the parameter (for example, &amp;lt;code&amp;gt;2=WP:VPT&amp;lt;/code&amp;gt; will insert a link to [[WP:VPT]]),&lt;br /&gt;
* {{para|info|&amp;amp;lt;{{var|extra information}}&amp;gt;}}: When set to non-blank, will insert &amp;amp;lt;{{var|extra information}}&amp;gt; into the template text.&lt;br /&gt;
* {{para|demo|&amp;amp;lt;{{var|Template_name}}&amp;gt;}}: Will use the transclusion count for the template at &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Template:&amp;lt;/nowiki&amp;gt;&amp;amp;lt;{{var|Template_name}}&amp;gt;]]&amp;lt;/code&amp;gt; instead of detecting what template it is being used on. Capitalization must exactly match the value used in [[Special:PrefixIndex/Module:Transclusion_count/data/]].&lt;br /&gt;
* {{para|form}}: When set to &amp;quot;&amp;lt;code&amp;gt;editnotice&amp;lt;/code&amp;gt;&amp;quot;, will display the message using {{tl|editnotice}} instead of {{tl|ombox}}.&lt;br /&gt;
* {{para|expiry}}: Sets the {{para|expiry}} parameter for {{tl|editnotice}}.&lt;br /&gt;
* {{para|no-percent|yes}}: suppresses automatic &#039;percent of all pages&#039; annotation; &#039;percent of all pages&#039; annotation is automatically added when template is used in more than 1% of all pages (currently &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{NUMBEROFPAGES}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; is {{NUMBEROFPAGES}} pages so 1% is {{formatnum:{{#expr:trunc ({{formatnum:{{NUMBEROFPAGES}}|R}}/100)}}}} pages)&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
The full code for a /doc page top usually looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&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;
{{high-use}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Standard form ===&lt;br /&gt;
{{nowiki template demo|code=&amp;lt;nowiki&amp;gt;{{high-use}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{nowiki template demo|code=&amp;lt;nowiki&amp;gt;{{high-use | |Wikipedia talk:High-risk templates }}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Rounding and + notation ===&lt;br /&gt;
{{nowiki template demo|code=&amp;lt;nowiki&amp;gt;{{high-use |49,500 |demo=A template that does not exist }}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{nowiki template demo|code=&amp;lt;nowiki&amp;gt;{{high-use |49,500+ |demo=A template that does not exist }}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Editnotice form ===&lt;br /&gt;
{{nowiki template demo|code=&amp;lt;nowiki&amp;gt;{{high-use |form=editnotice }}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== High risk ===&lt;br /&gt;
{{nowiki template demo|code=&amp;lt;nowiki&amp;gt;{{high-use |demo=Yesno }}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{nowiki template demo|code=&amp;lt;nowiki&amp;gt;{{high-use |demo=Yesno |no-percent=yes}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{nowiki template demo|code=&amp;lt;nowiki&amp;gt;{{high-use |risk |demo=High-use }}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{nowiki template demo|code=&amp;lt;nowiki&amp;gt;{{high-use |risk |Wikipedia talk:High-risk templates |info=This is a very large number! |demo=Yesno}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
The [[Template:High-use/sandbox|/sandbox]] and [[Template:High-use/testcases|/testcases]] links are the standard names for such subpages. If those pages are created, then the green /doc box for the template will detect them and link to them in its heading. For instance, see the top of this documentation.&lt;br /&gt;
&lt;br /&gt;
[[User:Ahechtbot|Ahechtbot]] compiles usage statistics for all templates with 2,000 or more transclusions, using [[User:Ahechtbot/transclusioncount.py]], and writes them to subpages of [[Module:Transclusion count/data]] (see [[Wikipedia:Bots/Requests for approval/Ahechtbot 6]]). These pages are usually updated every Sunday, but since running the query is resource intensive, it may be delayed or skipped if Wikipedia server usage is high. &#039;&#039;&#039;Important&#039;&#039;&#039;: If a transclusion count is available in [[Module:Transclusion count/data]], any manually input values will be ignored by this template.&lt;br /&gt;
&lt;br /&gt;
== Supporting templates and modules ==&lt;br /&gt;
* {{tl|ombox}} which uses {{module link|Message box|ombox}}&lt;br /&gt;
* {{tl|editnotice}} which uses {{module link|Message box|fmbox}}&lt;br /&gt;
* {{module link|high-use|main}}&lt;br /&gt;
* {{module link|transclusion count|fetch}}&lt;br /&gt;
&lt;br /&gt;
==Redirects==&lt;br /&gt;
{{columns-list|colwidth=15em|&lt;br /&gt;
*{{tl|heavilytranscluded}}&lt;br /&gt;
*{{tl|high risk}}&lt;br /&gt;
*{{tl|high-risk}}&lt;br /&gt;
*{{tl|high use}}&lt;br /&gt;
*{{tl|risky template}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* {{tl|Intricate template}} – for templates that are complex, using less obvious techniques&lt;br /&gt;
* {{tl|Interconnected template}} – for templates that have dependencies on others, or on config files, subpages, dynamic doc, etc.&lt;br /&gt;
* {{tl|pp-template}} – protection template that usually is put on high-risk templates&lt;br /&gt;
* {{tl|Used in system}} – for templates used in the Wikipedia user interface&lt;br /&gt;
* [[Wikipedia:High-risk templates]]&lt;br /&gt;
* [[Wikipedia:Template sandbox and test cases]]&lt;br /&gt;
&lt;br /&gt;
== Template counters ==&lt;br /&gt;
* [[toollabs:templatecount/]] – easy to use, returns current (real time) transclusion count for a template&lt;br /&gt;
* &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:Special:MostLinkedTemplates|limit=500}} Special:MostLinkedTemplates]&amp;lt;/span&amp;gt; – special page search for most transcluded templates&lt;br /&gt;
* [[Special:PrefixIndex/Module:Transclusion_count/data/]] – template count data used by this template that is broken down by first letter of template and rounded to two or three significant figures, and updated weekly&lt;br /&gt;
* [[Wikipedia:Database reports/Templates transcluded on the most pages]] – lists templates with 2,000 or more transclusions.&lt;br /&gt;
&amp;lt;!-- * [[tools:~dispenser/cgi-bin/embeddedincount.py]] – Seems to lack human interface, probably meant for programs to call. (not working anymore) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories go below this line, please; interwikis go to Wikidata, thank you! --&amp;gt;&lt;br /&gt;
[[Category:Documentation header templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TemplateData ==&lt;br /&gt;
{{TemplateData header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&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;number of transclusions (DEPRECATED)&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;either a static number of times the template has been transcluded, or the word \&amp;quot;risk\&amp;quot; (without quotes) to display \&amp;quot;a very large number of\&amp;quot; instead of the actual value.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;risk&amp;quot;&lt;br /&gt;
			],&lt;br /&gt;
			&amp;quot;deprecated&amp;quot;: &amp;quot;This value will be ignored, if transclusion data is available for the current page.&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;discussion page, or use + notation&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The second parameter is overloaded. It will cause the number of transclusions to display as \&amp;quot;#,###+\&amp;quot; instead of \&amp;quot;approximately #,###\&amp;quot; when set equal to \&amp;quot;yes\&amp;quot; (without quotes). When used in this manner, values will be rounded down, instead of rounded to the nearest number with the appropriate number of significant figures. When set to any other non-blank value, it will replace the link to the template&#039;s talk page to the value of the parameter (for example, 2=WP:VPT will insert a link to WP:VPT)&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;default&amp;quot;: &amp;quot; &amp;quot;,&lt;br /&gt;
			&amp;quot;autovalue&amp;quot;: &amp;quot; &amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;info&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Extra information&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;When set to non-blank, will insert the value of this parameter into the template text.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;demo&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;template name (intended for demo purposes)&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Will use the transclusion count for the template at [[Template:&amp;lt;Template_name&amp;gt;]] instead of detecting what template it is being used on. Capitalization must exactly match the value used in Special:PrefixIndex/Module:Transclusion_count/data/.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;form&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;form for this template&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;When set to \&amp;quot;editnotice\&amp;quot;, will display the message using {{editnotice}} instead of {{ombox}}.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
			&amp;quot;suggestedvalues&amp;quot;: [&lt;br /&gt;
				&amp;quot;editnotice&amp;quot;,&lt;br /&gt;
				&amp;quot; &amp;quot;&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;expiry&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Expiry for {{editnotice}}&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;if `form=editnotice`, this will set the expiry parameter of the editnotice.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;date&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;system&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Please directly use {{Used in system}} instead&amp;quot;,&lt;br /&gt;
			&amp;quot;deprecated&amp;quot;: true&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;This is the {{high-use}} message box.\n\nIt is meant to be put at the top of the documentation subpage for templates transcluded onto more than 2,000 pages. For templates transcluded onto more than 100,000 pages, or if the first parameter is set to risk, then a stronger wording is given.\n\nNote: It is normal that some of the links in the message box are red. &amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:High-risk&amp;diff=18730</id>
		<title>Template:High-risk</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:High-risk&amp;diff=18730"/>
		<updated>2025-08-13T06:12:38Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:High-risk&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:High-use/doc]]&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Talk_other/doc&amp;diff=18729</id>
		<title>Template:Talk other/doc</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Talk_other/doc&amp;diff=18729"/>
		<updated>2025-08-13T06:11:44Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Talk_other/doc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
{{High-risk}}&lt;br /&gt;
{{cascade-protected template}}&lt;br /&gt;
&amp;lt;!--Categories where indicated at the bottom of this page, please; interwikis at Wikidata (see [[Wikipedia:Wikidata]])--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is the {{tl|talk other}} meta-template.&lt;br /&gt;
&lt;br /&gt;
This template helps other templates detect if they are on a talk page or some &amp;quot;other&amp;quot; type of page.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
This template usually takes two parameters, like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{talk other | Talk pages text | Other pages text }}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the template is on any talk page, it will return this:&lt;br /&gt;
&lt;br /&gt;
:{{talk other | demospace=talk | Talk pages text | Other pages text }}&lt;br /&gt;
&lt;br /&gt;
If the template is on any other page, it will return this:&lt;br /&gt;
&lt;br /&gt;
:{{talk other | Talk page text | Other pages text }}&lt;br /&gt;
&lt;br /&gt;
A typical usage case could be to make it so that a template only adds a category when on talk pages. Thus not adding other pages that just show the template. Like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{talk other | [[Category:Some talk page category]] }}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or to warn that a template should not be used on other pages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{talk other | | This template should only be used on talk pages. }}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that in the first case above the &amp;quot;other&amp;quot; parameter was not used, and in the second example the &amp;quot;talk&amp;quot; parameter was left empty.&lt;br /&gt;
&lt;br /&gt;
== Demospace ==&lt;br /&gt;
For testing and demonstration purposes this template can take a parameter named &#039;&#039;&#039;demospace&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
* If it has the value &#039;&#039;&#039;talk&#039;&#039;&#039; it returns the talk pages text.&lt;br /&gt;
* It if has the value &#039;&#039;&#039;other&#039;&#039;&#039; or any other value such as the name of some other namespace it returns the other pages text.&lt;br /&gt;
* If the parameter is empty or undefined, the actual page type determines the result.&lt;br /&gt;
&lt;br /&gt;
Like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{talk other &lt;br /&gt;
| Talk pages text &lt;br /&gt;
| Other pages text &lt;br /&gt;
| demospace = talk&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No matter on what kind of page the code above is used it will return this:&lt;br /&gt;
&lt;br /&gt;
:{{talk other &lt;br /&gt;
| Talk pages text &lt;br /&gt;
| Other pages text &lt;br /&gt;
| demospace = talk&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
You can make it so your template also understands the &#039;&#039;&#039;demospace&#039;&#039;&#039; parameter. That means you can demonstrate the different appearances of your template in the documentation for your template. Then do like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{talk other &lt;br /&gt;
| Talk pages text &lt;br /&gt;
| Other pages text &lt;br /&gt;
| demospace = {{{demospace|}}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
This template detects all types of talk pages as type &#039;&#039;&#039;talk&#039;&#039;&#039;. That is, &amp;quot;Talk:&amp;quot;, &amp;quot;User talk:&amp;quot;, &amp;quot;File talk:&amp;quot; and so on are all of type &#039;&#039;&#039;talk&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This template works like {{tl|main talk other}}, for more examples and technical details see full documentation there.&lt;br /&gt;
&lt;br /&gt;
{{Namespace and pagename-detecting templates}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&amp;lt;!--Categories below this line, please; interwikis at Wikidata--&amp;gt;&lt;br /&gt;
[[Category:If-namespace-then-else templates]]&lt;br /&gt;
[[Category:Talk namespace templates]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Talk_other&amp;diff=18728</id>
		<title>Template:Talk other</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Talk_other&amp;diff=18728"/>
		<updated>2025-08-13T06:11:10Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Talk_other&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#switch:&lt;br /&gt;
  &amp;lt;!--If no or empty &amp;quot;demospace&amp;quot; parameter then detect namespace--&amp;gt;&lt;br /&gt;
  {{#if:{{{demospace|}}} &lt;br /&gt;
  | {{lc: {{{demospace}}} }}    &amp;lt;!--Use lower case &amp;quot;demospace&amp;quot;--&amp;gt;&lt;br /&gt;
  | {{#ifeq:{{NAMESPACE}}|{{TALKSPACE}}&lt;br /&gt;
    | talk&lt;br /&gt;
    | other&lt;br /&gt;
    }} &lt;br /&gt;
  }}&lt;br /&gt;
| talk     = {{{1|}}}&lt;br /&gt;
| other&lt;br /&gt;
| #default = {{{2|}}}&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>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Redirect_category_shell/doc&amp;diff=18725</id>
		<title>Template:Redirect category shell/doc</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Redirect_category_shell/doc&amp;diff=18725"/>
		<updated>2025-08-13T06:09:52Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Redirect_category_shell/doc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --&amp;gt;&lt;br /&gt;
{{hatnote|This template supplements the redirect categorization done by adding rcats individually to redirects and by past usage of the now deprecated {{tl|This is a redirect}} template.  Its creation and usage is the direct result of [[Template talk:This is a redirect|discussion]]s about the benefits and the shortcomings of the &#039;&#039;This is a redirect&#039;&#039; template.}}&lt;br /&gt;
{{High-use}}&lt;br /&gt;
{{mbox|image=[[File:Ambox warning pn.svg|45px|alt=red-outlined triangle containing exclamation point]]|text={{red|&#039;&#039;&#039;Important! Please read.&#039;&#039;&#039;}} {{maroon|&#039;&#039;&#039;This template should &#039;&#039;not&#039;&#039; be used by bots, or by any automated or semi-automated process without specifying parameters.&#039;&#039;&#039; It should also not be used without specifying parameters unless the redirect is manually categorized.&amp;lt;br/&amp;gt;This template may serve as a &#039;&#039;learning tool&#039;&#039; for editors who wish to understand how to categorize redirects. &#039;&#039;Only&#039;&#039; editors who intend to revisit the redirect to determine the appropriate redirect category templates (rcats) should use this template without parameters or with an empty first parameter.}} &amp;lt;small&amp;gt;([[#When used alone|more below]])&amp;lt;/small&amp;gt;}}&lt;br /&gt;
{{Substitution|not|nor should this template and most redirect category (rcat) templates be used to tag [[Wikipedia:Soft redirects|soft redirects]]. Two exceptions are &#039;&#039;{{tl|Soft redirect with Wikidata item}}&#039;&#039;, which can be used on all soft redirects, and &#039;&#039;{{tl|R category with possibilities}}&#039;&#039;, which can only be used on soft redirects in the category namespace}}&lt;br /&gt;
{{#ifeq:{{SUBPAGENAME}}|sandbox|{{Template redirect|Rcat shell/sandbox}}|{{template redirect|Redirect shell|R cat shell|Rcat shell|RCAT shell}}{{Template shortcut|redr|rcatsh}}}}&lt;br /&gt;
&lt;br /&gt;
This template is similar to {{tl|WikiProject banner shell}} in that it may be used to add one or more appropriate redirect category ([[WP:RCAT|rcat]]) templates, along with their parameters, to redirects.  Additionally, this template &#039;&#039;automatically&#039;&#039; senses, describes, categorizes and changes [[WP:PP|protection levels]] when appropriate.  A third important function is to help editors learn more about redirect categorization by use of the {{c|Miscellaneous redirects|manifold sort}}.  For more information see the page below and the [[WP:TMR|main rcat &#039;&#039;&#039;index&#039;&#039;&#039;]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
As with the &#039;&#039;This is a redirect&#039;&#039; template, this template is based on a [[Wikipedia talk:WikiProject Redirect/Archive 1#New meta-template(s) idea|proposal]] to standardize [[wp:redirect templates|redirect templates]] (rcats). Its basic purpose is to simplify the process of tagging and categorizing redirects.&lt;br /&gt;
&lt;br /&gt;
Like the &#039;&#039;This is a redirect&#039;&#039; template, this shell template is also able to help newer contributors learn the redirect category system.  Details of this part of the purpose of this shell template may be found in the [[#When used alone|When used alone]] section below.&lt;br /&gt;
&lt;br /&gt;
Protection levels are automatically detected by this template by use of {{tl|pp-protected}} and {{tl|pp-move}}.  When edit protection or move protection (or both) is applied to a redirect that has been tagged with this template, the protection level is automatically detected, and the redirect will be tagged with a protection rcat and sorted to the appropriate protection-related category(ies).  When protection is altered or removed, then the protection-related rcats and category(ies) will also be (automatically) changed or removed from the redirect.&lt;br /&gt;
&lt;br /&gt;
This template can categorize and display the text (with parameters) of any number of rcats that are needed (usually from one to seven).&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mbox&amp;quot; group=&amp;quot;Mbox note&amp;quot;&amp;gt;When the wiki markup of this template is opened, it is seen that this is an &amp;quot;mbox-based&amp;quot; template.  &amp;quot;Mbox&amp;quot; stands for &amp;quot;multi namespace message box&amp;quot;, which is a meta-[[Help:A quick guide to templates|template]] that works in all namespaces.  There can be a problem with this mbox unless editors are careful to place &#039;&#039;Redirect category shell&#039;&#039; &#039;&#039;&#039;on its own line at the &#039;&#039;very beginning of the line&#039;&#039;&#039;&#039;&#039;.  If this is done then all is well; if this is not done, then [[HTML Tidy]] may interfere with the mbox and cause this template to appear in an abnormal and unexpected manner when saved.  So be careful where you leave this template placed in a redirect&#039;s Edit screen, take another look at the above [[#goodread|readability guide]], and be sure to preview your edits – all your edits.&lt;br /&gt;
: &#039;&#039;&#039;{{green|Correct:}}&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
#REDIRECT [[(target page)]]&lt;br /&gt;
&lt;br /&gt;
{{Redirect category shell||&lt;br /&gt;
{{R unprintworthy}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: &#039;&#039;&#039;{{red|&#039;&#039;Not&#039;&#039; correct:}}&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
#REDIRECT [[(target page)]] {{Redirect category shell||{{R unprintworthy}}}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: &#039;&#039;A blank line is usually placed between the redirect target and this template to make the &amp;quot;Edit&amp;quot; screen easier to read.&#039;&#039;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;printworthiness&amp;quot; group=&amp;quot;Printworthiness note&amp;quot;&amp;gt;Where the [[WP:printworthiness|printworthiness]] of a [[WP:mainspace|mainspace]] redirect is concerned, there are three kinds of [[WP:RCAT|rcat]]s:&lt;br /&gt;
# those that populate the {{c|Printworthy redirects}} category by default,&lt;br /&gt;
# those that populate the {{c|Unprintworthy redirects}} category by default, and &lt;br /&gt;
# those that do not default to either of the above, and which leave it to the editor to decide based upon best knowledge whether or not a mainspace redirect is suitable for a printed or DVD version of &#039;&#039;Wikipedia&#039;&#039;.&lt;br /&gt;
At present, those that are types 1 and 2 will populate the appropriate printworthiness category, however the notice will not appear within the mbox of this template unless either {{tl|R printworthy}} or {{tl|R unprintworthy}} is listed as an rcat within this template.  For example, if a redirect is tagged with:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from ambiguous term}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
...then the hidden categories populated will be {{c|Redirects from ambiguous pages}}, {{c|Unprintworthy redirects}} and any appropriate protection categories. These will appear at the bottom of the redirect page only to registered users who are logged in and who have set their preferences to see hidden categories.  The mbox that will appear to all readers would look like:&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from ambiguous term/demo|embed=yes}}&lt;br /&gt;
}}&lt;br /&gt;
To show the printability or printworthiness information in the mbox, then the redirect must be tagged with either the printworthy or unprintworthy rcat as in the following example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from ambiguous term}}&lt;br /&gt;
{{R unprintworthy}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
...which produces:&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from ambiguous term/demo|embed=yes}}&lt;br /&gt;
{{R unprintworthy|embed=yes}}&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Only then&#039;&#039;&#039; will the printability, &#039;&#039;printworthy&#039;&#039; or &#039;&#039;unprintworthy&#039;&#039;, be described within this template&#039;s mbox on the redirect page.&#039;&#039;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Used by itself with no parameters, for example, {{tlc|Redirect category shell}} (and its alias {{tlc|Rcat shell}}), the template will appear as it does at the top of this page, and the redirect will populate {{Cat|Miscellaneous redirects}}.  That category will also be populated if the first parameter is left empty while rcats occupy the second parameter.  This is useful when an editor adds rcats and yet feels unsure that there may be at least one other rcat with category that may be used to tag the redirect.  Monitors of the &#039;&#039;Miscellaneous redirects&#039;&#039; category will then help decide if another rcat(s) is needed.  Then the empty first parameter may be excluded by removing either the first or second pipe.  That will remove the redirect from &#039;&#039;Category:Miscellaneous redirects&#039;&#039;.  [[#When used alone|See below]] for more information.&lt;br /&gt;
&lt;br /&gt;
This template may hold any number of different redirect category ([[WP:RCAT|rcat]]) templates, usually from one to seven.  The choices for editors are listed at [[Wikipedia:Template index/Redirect pages]] both alphabetically and by function.  Any of those rcats may be used either with their full template name, e.g., &#039;&#039;&#039;R from alternative language&#039;&#039;&#039;, or with an alias (shortcut redirect), which may be found in each rcat&#039;s [[WP:TDOC|documentation]].&lt;br /&gt;
&lt;br /&gt;
An unnamed parameter, {{para|1}}, has been introduced in this template and works as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell|1=&lt;br /&gt;
{{rcat 1}}&lt;br /&gt;
{{rcat 2}}&lt;br /&gt;
{{rcat 3}}&lt;br /&gt;
{{rcat N}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: &#039;&#039;or&#039;&#039; the {{code|1{{=}}}} may be omitted:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{rcat 1}}&lt;br /&gt;
{{rcat 2}}&lt;br /&gt;
{{rcat 3}}&lt;br /&gt;
{{rcat N}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
As with all templates that have unnamed (numbered) parameters, the numbers and equal signs may be omitted.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;N&amp;quot; represents the highest number of rcats that can be used in this template, and at this point the only limit would be any wiki markup ceiling that may exist.  Usually, from one to seven rcats suffice; however, more rcats can be used if required.&lt;br /&gt;
&lt;br /&gt;
The actual sequence of rcats is left to editors – there is no priority as to which rcat should be &amp;quot;first&amp;quot; and which rcats should &amp;quot;follow&amp;quot; in any particular order.&lt;br /&gt;
&lt;br /&gt;
A second unnamed parameter, {{para|2}}, has also been introduced.  This gives this template the same &amp;quot;help&amp;quot; functionality that is used in the &#039;&#039;This is a redirect&#039;&#039; template.  If the first parameter is left &amp;quot;empty&amp;quot;, then {{cat|Miscellaneous redirects}} will be populated:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell|1=|2=&lt;br /&gt;
{{rcat 1}}&lt;br /&gt;
{{rcat 2}}&lt;br /&gt;
{{rcat N}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
:&#039;&#039;or&#039;&#039; if a second pipe is placed directly after the first pipe, then that will accomplish the same manifold sort:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell||&lt;br /&gt;
{{rcat 1}}&lt;br /&gt;
{{rcat 2}}&lt;br /&gt;
{{rcat N}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Note the double pipe after the word &amp;quot;shell&amp;quot; above, which indicates an empty first parameter.  Editors who monitor the &#039;&#039;Miscellaneous redirects&#039;&#039; category will come to the redirect and check, add or remove rcats as needed.&lt;br /&gt;
&lt;br /&gt;
Also, when used by itself this template will appear as it does at the top of this page and populate the &#039;&#039;Miscellaneous redirects&#039;&#039; category:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{anchor|goodread}}&lt;br /&gt;
This template may be added to a redirect page in the following manner:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
#REDIRECT [[(target page name)]]&lt;br /&gt;
&lt;br /&gt;
{{Redirect category shell||&lt;br /&gt;
{{R from short name}}&lt;br /&gt;
{{R unprintworthy}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: It can be noted here that the rcats can also go on the same line as the &#039;&#039;Redirect category shell&#039;&#039; template:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
#REDIRECT [[(target page name)]]&lt;br /&gt;
&lt;br /&gt;
{{Redirect category shell||{{R from short name}}{{R unprintworthy}}}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: Again, note the double pipe after &amp;quot;shell&amp;quot; above, which indicates an empty first parameter.  Leave the first parameter empty to sort a redirect to {{cat|Miscellaneous redirects}} &#039;&#039;in addition to&#039;&#039; the categories of the rcats that are used.  In this case the {{c|Redirects from short names}} and {{c|Unprintworthy redirects}} categories will also be populated.  Monitors of the &amp;quot;Miscellaneous redirects&amp;quot; category will help editors when needed.&lt;br /&gt;
&lt;br /&gt;
Generally for good readability on the edit screen, this template is placed beginning on the third line of that screen as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
Line 1: #REDIRECT [[(target page name)]]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 Line 2: {{red|&amp;lt;small&amp;gt;(please leave this line blank for emphasis and ease of reading by editors)&amp;lt;/small&amp;gt;}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
Line 3: {{Redirect category shell|{{R from move}}{{R to section}}{{R printworthy}}}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: &#039;&#039;See also: section titled &#039;&#039;&#039;[[#Mbox-based|Mbox note]]&#039;&#039;&#039; below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
In addition to the unnamed {{para|1}} and {{para|2}} parameters, there is a &amp;quot;hatnote&amp;quot; parameter, {{para|h}}, which provides an italicized TOP note when needed.  For example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell|h=This code has not been confirmed as an [[International Air Transport Association airport code|IATA]] airport code.|&lt;br /&gt;
{{R from airport code}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
...uses the rcat {{tl|R from airport code}} and produces:&amp;lt;!-- Note:  An Mbox is used below rather than the template to illustrate the error box, which only appears on redirect pages. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Mbox&lt;br /&gt;
| name  = This is a redirect/rcat&lt;br /&gt;
| type  = move &lt;br /&gt;
| image = none&lt;br /&gt;
| style = margin-top: 1.1em; border: solid 1px darkblue; border-left-width: 0.5em;&lt;br /&gt;
| textstyle = padding-top: 0.9em; padding-bottom: 0.9em;&lt;br /&gt;
| text  = &#039;&#039;&#039;This page is a [[Wikipedia:Redirect|redirect]]. &amp;lt;small&amp;gt;The following [[Wikipedia:Categorizing redirects|categories]] are used to track and monitor this redirect:&amp;lt;/small&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:: &#039;&#039;This code has not been confirmed as an [[International Air Transport Association airport code|IATA]] airport code.&#039;&#039;&lt;br /&gt;
* {{R from airport code|embed=yes}}&lt;br /&gt;
{{Ombox|type=content|image=[[File:Stop hand orange.svg|50px]]|text={{Error|The above [[WP:RCAT|rcat]] should only be used to categorize redirects that are in the &#039;&#039;[[WP:main|main]]&#039;&#039; namespace.}}}}&lt;br /&gt;
&#039;&#039;&amp;lt;small&amp;gt;When appropriate, [[WP:PP|protection levels]] are automatically sensed, described and categorized.&amp;lt;/small&amp;gt;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
:An error box appears that illustrates what happens if an editor uses an rcat in the wrong namespace.  Correct namespaces are found on individual rcat documentation pages.  In addition to the error box, the redirect &#039;&#039;&#039;&#039;&#039;will not&#039;&#039;&#039;&#039;&#039; be sorted to the rcat&#039;s category; instead it will populate &#039;&#039;&#039;&#039;&#039;{{cat|Pages with templates in the wrong namespace}}!&#039;&#039;&#039; &#039;&#039;If an error box appears when an edit is &#039;&#039;&#039;previewed&#039;&#039;&#039;, then appropriate changes can be made &#039;&#039;before&#039;&#039; the redirect page is actually &#039;&#039;&#039;saved&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:Also, note the pipe symbol &#039;&#039;(|)&#039;&#039; that follows the text in the {{para|h}} parameter. If this pipe is omitted, very unusual results will be seen when your edit is previewed or saved. Be sure to include that pipe at the very end of the text if the {{para|h}} parameter is used to form a hatnote.&lt;br /&gt;
&lt;br /&gt;
==== Rcat parameters ====&lt;br /&gt;
In addition to this template&#039;s ability to act as a shell template for rcats, it accepts all of the parameters that rcats accept.  Rcat parameters, when needed, will work in this template as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from plural|printworthy}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This subdues the {{c|Unprintworthy redirects}} category to which {{tl|R from plural}} defaults and populates the {{c|Printworthy redirects}} category instead.  The position an rcat holds will have no effect on the parameters of other rcats that are used to tag a redirect:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot; style=&amp;quot;font-size:95%;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from move}}&lt;br /&gt;
{{R from modification}}&lt;br /&gt;
{{R from alternative name}}&lt;br /&gt;
{{R from alternative language|en|es}}&lt;br /&gt;
{{R for convenience}}&lt;br /&gt;
{{R from plural|printworthy}}&lt;br /&gt;
{{R printworthy}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example, {{tl|R from plural}} is the sixth rcat, and its first parameter is used to change from &amp;quot;unprintworthy&amp;quot; to &amp;quot;printworthy&amp;quot;.  {{tl|R from alternative language}}) holds the 4th position, and its first parameter is used to house the [[Wikipedia:Template messages/Redirect language codes|ISO 639 language code]] of the source language, in this case &#039;&#039;&#039;&amp;lt;code&amp;gt;{{nbsp}}en{{nbsp}}&amp;lt;/code&amp;gt;&#039;&#039;&#039; for [[English language|English]].  Its second parameter houses the language code for the targeted page, in this case &#039;&#039;&#039;&amp;lt;code&amp;gt;{{nbsp}}es{{nbsp}}&amp;lt;/code&amp;gt;&#039;&#039;&#039; for the [[Spanish language]].  It does not matter if the relative position of these rcats changes for any reason, their individual parameters will continue to be effective.&lt;br /&gt;
&lt;br /&gt;
If more rcat parameters are used, then they work the same way.  For example, if a redirect exists that is a misspelling of a title, it can be tagged with {{tl|R from misspelling}} in the following manner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from misspelling|(correct spelling if needed)|printworthy}}&lt;br /&gt;
{{R printworthy}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the rcat&#039;s &#039;&#039;{{para|1}}&#039;&#039; parameter is the correct spelling (used only if the target of the redirect is &#039;&#039;&#039;not&#039;&#039;&#039; the correct spelling).  The rcat&#039;s &#039;&#039;{{para|2}}&#039;&#039; parameter can be used to change from the default &amp;quot;unprintworthy&amp;quot; categorization.  Some misspellings may be helpful in a printed version of &#039;&#039;Wikipedia&#039;&#039;, so the second parameter in &#039;&#039;R from misspelling&#039;&#039; above is used to subdue its default &amp;quot;unprintworthy&amp;quot; category sort, and the redirect will populate {{cat|Printworthy redirects}} instead.  In this shell template, the order of the rcats will not affect the rcats&#039; parameters.  If an editor checks the page history and finds that the above redirect is also the result of a page move and inserts {{tl|R from move}} at the top of the order:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from move}}&lt;br /&gt;
{{R from misspelling|(correct spelling)|printworthy}}&lt;br /&gt;
{{R printworthy}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...the parameters of the &#039;&#039;R from misspelling&#039;&#039; rcat template will not be affected, as they may be when used in the &#039;&#039;This is a redirect&#039;&#039; template.&lt;br /&gt;
&lt;br /&gt;
An example of a &amp;quot;printworthy misspelling&amp;quot; can be found at template {{tl|R from misspelling}}.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Another example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from alternative language|ja|es}}&lt;br /&gt;
{{R unprintworthy}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above code will sort the redirect into three categories:&lt;br /&gt;
* {{c|Redirects from Japanese-language terms}} ({{para|1|ja}}),&lt;br /&gt;
* {{c|Redirects to Spanish-language terms}} ({{para|2|es}}) and&lt;br /&gt;
* {{c|Unprintworthy redirects}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;See the lists of [[List of ISO 639-1 codes|ISO 639-1]] and [[List of ISO 639-2 codes|ISO 639-2]] codes for two- and three-letter language codes that can be used this way.  See also [[Wikipedia:Template messages/Redirect language codes]] for common codes that are already used on redirects.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== When used alone ===&lt;br /&gt;
This template is designed to help contributors who are unfamiliar with categorizing redirects by enabling them to sort redirects into the monitored {{c|Miscellaneous redirects}} category.  Do not hesitate to use this important function to help with sorting redirects to correct and appropriate categories.&lt;br /&gt;
&lt;br /&gt;
There are two ways to sort a redirect into the &#039;&#039;Miscellaneous redirects category&#039;&#039;.  When this template is used without any rcats, it will perform the miscellaneous sort: &lt;br /&gt;
&lt;br /&gt;
{{tlx|Redirect category shell}}...&lt;br /&gt;
{{Redirect category shell|nocat=true}}&lt;br /&gt;
&lt;br /&gt;
Also, if one or more rcats are known, but an editor is unsure that there might be one or more &#039;&#039;other&#039;&#039; rcats that are needed, then leave the first parameter blank (type two pipes together → &amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell||&lt;br /&gt;
{{R from subtopic}}&lt;br /&gt;
{{R printworthy}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Redirect category shell|nocat=true||&lt;br /&gt;
{{R from subtopic|embed=yes}}&lt;br /&gt;
{{R printworthy|embed=yes}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Monitors of the &#039;&#039;Miscellaneous redirects&#039;&#039; category will check the redirect, add other rcats if needed and then remove the empty first parameter.&lt;br /&gt;
&lt;br /&gt;
==Comparison==&lt;br /&gt;
[[Template:Redirect category shell/Comparison]] shows the difference in the appearance of text between when individual rcats are used and when this template is used.&lt;br /&gt;
&lt;br /&gt;
==Other templates==&lt;br /&gt;
This template may also carry and hold other templates within it.  Even the {{tl|DEFAULTSORT}} magic word and a [[WP:sort key|sort key]] may be used either inside this template or below it. Another template commonly used within the &#039;&#039;Redirect category shell&#039;&#039; template is {{tl|Italic title}} and its shortcut to format titles in italics. Some rcats such as {{tl|R from book}} and {{tl|R from film}} automatically format the redirect names in italics. Any appropriate template may be used within this shell template in the following manner:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from move}}&lt;br /&gt;
{{R from alternative name}}&lt;br /&gt;
{{Italic title}}&lt;br /&gt;
{{DEFAULTSORT:Hobbit, The}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
{{anchor|Mbox-based}}&lt;br /&gt;
&#039;&#039;&#039;Mbox note&#039;&#039;&#039;&lt;br /&gt;
{{Reflist|group=&amp;quot;Mbox note&amp;quot;}}&lt;br /&gt;
&#039;&#039;&#039;Printworthiness note&#039;&#039;&#039;&lt;br /&gt;
{{See also|Wikipedia:Printability}}&lt;br /&gt;
{{Reflist|group=&amp;quot;Printworthiness note&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* {{tl|Talk page of a redirect}}, to &amp;quot;[[WP:SRD|soft]]&amp;quot; redirect a [[WP:subject page|subject page]]&#039;s talk page that has already been created &#039;&#039;&#039;&#039;&#039;and given content&#039;&#039;&#039;&#039;&#039; (project banners, deletion/merge notices, discussions)&lt;br /&gt;
* [[Wikipedia:Protection policy]], for questions related to this template&#039;s ability to detect protection levels&lt;br /&gt;
* [[Wikipedia:Template index/Redirect pages]], a functional and an alphabetical index of rcats&lt;br /&gt;
* [[Wikipedia:WikiProject Redirect/Style guide|WikiProject Redirect/Style guide]]&lt;br /&gt;
&lt;br /&gt;
==Tracking categories==&lt;br /&gt;
* {{clc|Redirect category shell without parameters}}&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;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Redirect categories&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;1 or more redirect category templates.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;{{R from alternative name}}&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;,&lt;br /&gt;
			&amp;quot;suggested&amp;quot;: true&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Redirect categories (more needed)&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Same as Redirect categories, except that the redirect is also added to Category:Miscellaneous redirects.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;h&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Hatnote&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;A hatnote to display above the redirect categories.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;nocat&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;No category&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Don&#039;t add this redirect to Category:Miscellaneous redirects, even if Redirect categories has been left empty.&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;boolean&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;category&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Category&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;The category to add this redirect to if the Redirect categories parameter is empty. Defaults to Category:Miscellaneous redirects.&amp;quot;,&lt;br /&gt;
			&amp;quot;example&amp;quot;: &amp;quot;[[Category:Miscellaneous redirects]]&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;This template may be used to add one or more appropriate redirect category (rcat) templates, along with their parameters, to redirects. Additionally, this template automatically senses, describes, categorizes and changes protection levels when appropriate.&amp;quot;,&lt;br /&gt;
	&amp;quot;paramOrder&amp;quot;: [&lt;br /&gt;
		&amp;quot;1&amp;quot;,&lt;br /&gt;
		&amp;quot;2&amp;quot;,&lt;br /&gt;
		&amp;quot;h&amp;quot;,&lt;br /&gt;
		&amp;quot;nocat&amp;quot;,&lt;br /&gt;
		&amp;quot;category&amp;quot;&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{R template index}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories go below this line, please; interwikis go to Wikidata, thank you! --&amp;gt;&lt;br /&gt;
[[Category:WikiProject Redirect templates|Redirect category shell]]&lt;br /&gt;
[[Category:Redirect templates| ]]&lt;br /&gt;
[[Category:Template shell templates]]&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Redirect_category_shell&amp;diff=18723</id>
		<title>Template:Redirect category shell</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Redirect_category_shell&amp;diff=18723"/>
		<updated>2025-08-13T06:09:09Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Redirect_category_shell&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NONEWSECTIONLINK__{{Mbox&lt;br /&gt;
| name  = Redirect category shell&lt;br /&gt;
| type  = move &lt;br /&gt;
| image = none&lt;br /&gt;
| style = margin-top: 1.1em; border: solid 1px darkblue; border-left-width: 0.5em;&lt;br /&gt;
| textstyle = padding-top: 0.9em; padding-bottom: 0.9em;&lt;br /&gt;
| text  = &#039;&#039;&#039;This {{Talk other|talk page|page}} is a [[Wikipedia:Redirect|redirect]]. &amp;lt;small&amp;gt;The following [[Wikipedia:Categorizing redirects|categories]] are used to track and monitor this redirect:&amp;lt;/small&amp;gt;&#039;&#039;&#039;{{#if:{{{h|}}}&lt;br /&gt;
 |{{block indent|1= &#039;&#039;{{{h}}}&#039;&#039;}}&lt;br /&gt;
 }}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  Automatically detect protected redirects:&lt;br /&gt;
--&amp;gt;&amp;lt;includeonly&amp;gt;{{#switch: {{PROTECTIONLEVEL:move}}&lt;br /&gt;
   |sysop|templateeditor|extendedconfirmed={{pp-move|small=yes|catonly=no}}&lt;br /&gt;
 }}{{#switch: {{PROTECTIONLEVEL:edit}}&lt;br /&gt;
   |sysop&lt;br /&gt;
   |templateeditor&lt;br /&gt;
   |extendedconfirmed&lt;br /&gt;
   |autoconfirmed={{pp-protected|small=yes}}{{R protected}}&lt;br /&gt;
   | &amp;lt;!--Not protected, or only semi-move-protected--&amp;gt;&lt;br /&gt;
 }}&amp;lt;/includeonly&amp;gt;{{#if: {{{1|}}}||&amp;lt;includeonly&amp;gt;&lt;br /&gt;
* {{red|&#039;&#039;&#039;Important – Please Read! {{maroon|This template should {{em|not}} be applied without parameters by bot nor by any automated or semi-automated process. It should {{em|not}} be used without parameters {{em|unless you want to learn how to categorize redirects}}. For editors who want to learn how to categorize redirects, this template is a {{em|learning tool}}. {{em|Only}} those editors who intend to return to the redirect to learn which rcats to use should apply this template without parameters, or with an empty first parameter!}}&#039;&#039;&#039;}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Manifold sort&#039;&#039;&#039;:  If help is needed to determine appropriate categories, then this redirect populates &#039;&#039;&#039;{{Cat|Miscellaneous redirects}}&#039;&#039;&#039;.  Monitors of that category will check this redirect and add or remove [[Wikipedia:Categorizing redirects|rcats]] as needed.{{#ifeq: {{lc:{{{nocat|false}}}}} | false |{{{category|&amp;lt;includeonly&amp;gt;[[Category:Miscellaneous redirects]]&amp;lt;/includeonly&amp;gt;}}}}}&lt;br /&gt;
}}&lt;br /&gt;
{{#if: {{{2|}}}|{{{2}}}|{{{1|}}}}}{{#if: {{{1|}}}{{{2|}}}||{{#ifeq: {{ROOTPAGENAME}}|Redirect category shell||[[Category:Redirect category shell without parameters]]}}}}&lt;br /&gt;
&#039;&#039;&amp;lt;small&amp;gt;When appropriate, [[Wikipedia:Protection policy|protection levels]] are automatically sensed, described and categorized.&amp;lt;/small&amp;gt;&#039;&#039;&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>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Template_link_code&amp;diff=18720</id>
		<title>Template:Template link code</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Template_link_code&amp;diff=18720"/>
		<updated>2025-08-13T06:07:29Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Tempalte:Template_link_code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#Invoke:Template link general|main|nolink=yes|code=yes|nowrap=yes}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation|1=Template:Tlg/doc&lt;br /&gt;
|content = {{tlg/doc|tlc}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Tld&amp;diff=18719</id>
		<title>Template:Tld</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Tld&amp;diff=18719"/>
		<updated>2025-08-13T06:06:32Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Tld&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Template link code]]&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
	<entry>
		<id>https://mirror.consumerrights.wiki/index.php?title=Template:Random_page_in_category/doc&amp;diff=18718</id>
		<title>Template:Random page in category/doc</title>
		<link rel="alternate" type="text/html" href="https://mirror.consumerrights.wiki/index.php?title=Template:Random_page_in_category/doc&amp;diff=18718"/>
		<updated>2025-08-13T06:05:44Z</updated>

		<summary type="html">&lt;p&gt;ConsciousCode: Importing from Wikipedia:Template:Random_page_in_category/doc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
&amp;lt;!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --&amp;gt;&lt;br /&gt;
{{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}}&lt;br /&gt;
{{template shortcut|RPC}}&lt;br /&gt;
&lt;br /&gt;
This template creates a link to random page from a category.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
* First parameter is the category from which to get a random page. If it is not specified, it defaults to current page, which works only on category pages.&lt;br /&gt;
* Parameter {{Para|ns}} is for specifying the [[Wikipedia:Namespace|namespace number]]. Separate multiple namespace numbers with &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; (e.g. {{Para|ns|2;118}})&lt;br /&gt;
* Parameter {{Para|type}} specified the type of page to return (&amp;lt;code&amp;gt;page&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;subcat&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt;). {{Para|type|page}}, {{Para|type|subcat}}, and {{Para|type|file}} are equivalent to {{Para|ns|0}}, {{Para|ns|14}}, and {{Para|ns|6}}, respectively.&lt;br /&gt;
* Parameter {{Para|action}} specifies an action to perform on the page (e.g. {{Para|action|edit}}). See [[:mw:Manual:Parameters to index.php#Actions|Parameters to index.php§Actions]].&lt;br /&gt;
* Parameter {{Para|text}} is for specifying different link text.&lt;br /&gt;
&lt;br /&gt;
===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;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Category&amp;quot;,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Category from which page will be selected&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;wiki-page-name&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ns&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;Namespace&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;type&amp;quot;: {},&lt;br /&gt;
		&amp;quot;action&amp;quot;: {},&lt;br /&gt;
		&amp;quot;text&amp;quot;: {}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
* {{Tld|Random page in category}} would produce on [[:Category:Physics]]: {{Random page in category|Physics}}&lt;br /&gt;
* {{Tld|Random page in category|Physics}} produces: {{Random page in category|Physics}}&lt;br /&gt;
* {{Tld|Random page in category|Physics|text{{=}}Random page}} produces: {{Random page in category|Physics|text=Random page}}&lt;br /&gt;
* {{Tld|Random page in category|Pending AfC submissions|ns{{=}}2;118|type{{=}}page}} produces: {{Random page in category|Pending AfC submissions|ns=2;118|type=page}}&lt;br /&gt;
* {{Tld|Random page in category|States of the United States|type{{=}}subcat}} produces: {{Random page in category|States of the United States|type=subcat}}&lt;br /&gt;
* {{Tld|Random page in category|Featured pictures|type{{=}}file}} produces: {{Random page in category|Featured pictures|type=file}}&lt;br /&gt;
* {{Tld|Random page in category|Primary colors|action{{=}}edit|type{{=}}page|text{{=}}Edit an article about a primary color}} produces: {{Random page in category|Primary colors|action=edit|type=page|text=Edit an article about a primary color}}&lt;br /&gt;
&lt;br /&gt;
=== See also ===&lt;br /&gt;
* [[:toolforge:RandomInCategory|Random page in category on toolserver]] – the tool this template is based upon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
&amp;lt;!-- Categories below this line, please; interwikis at Wikidata --&amp;gt;&lt;br /&gt;
[[Category:Internal link templates]]&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>ConsciousCode</name></author>
	</entry>
</feed>