<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FNihiltres%2FCategory_manager</id>
	<title>Module:Sandbox/Nihiltres/Category manager - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FNihiltres%2FCategory_manager"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Nihiltres/Category_manager&amp;action=history"/>
	<updated>2026-05-27T20:20:37Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Sandbox/Nihiltres/Category_manager&amp;diff=145917&amp;oldid=prev</id>
		<title>imported&gt;Trialpears: Trialpears moved page Module:Category manager to Module:Sandbox/Nihiltres/Category manager without leaving a redirect: Userfying per Wikipedia:Templates_for_discussion/Log/2019_December_31#Module:Category_manager</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Nihiltres/Category_manager&amp;diff=145917&amp;oldid=prev"/>
		<updated>2020-01-08T08:19:19Z</updated>

		<summary type="html">&lt;p&gt;Trialpears moved page &lt;a href=&quot;/index.php?title=Module:Category_manager&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Module:Category manager (page does not exist)&quot;&gt;Module:Category manager&lt;/a&gt; to &lt;a href=&quot;/research/Module:Sandbox/Nihiltres/Category_manager&quot; title=&quot;Module:Sandbox/Nihiltres/Category manager&quot;&gt;Module:Sandbox/Nihiltres/Category manager&lt;/a&gt; without leaving a redirect: Userfying per &lt;a href=&quot;https://en.wikipedia.org/wiki/Templates_for_discussion/Log/2019_December_31#Module:Category_manager&quot; class=&quot;extiw&quot; title=&quot;wikipedia:Templates for discussion/Log/2019 December 31&quot;&gt;Wikipedia:Templates_for_discussion/Log/2019_December_31#Module:Category_manager&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local checkType = require(&amp;#039;libraryUtil&amp;#039;).checkType&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--Global strings and forms&lt;br /&gt;
local defaults = {&lt;br /&gt;
	badCatListFormat = &amp;quot;Bad category list format (key: %s, value: %s)&amp;quot;,&lt;br /&gt;
	categoryForm = &amp;quot;[[Category:%s]]&amp;quot;,&lt;br /&gt;
	keyedCategoryForm = &amp;quot;[[Category:%s|%s]]&amp;quot;,&lt;br /&gt;
	missingNameMsg = &amp;quot;Missing category name&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--Adds a category to the provided category list; sortKey is optional&lt;br /&gt;
function p.addCategory(catList, name, sortKey)&lt;br /&gt;
	--Check and normalize parameters&lt;br /&gt;
	checkType(&amp;#039;addCategory&amp;#039;, 1, catList, &amp;#039;table&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;addCategory&amp;#039;, 2, name, &amp;#039;string&amp;#039;)&lt;br /&gt;
	name = mw.text.trim(name)&lt;br /&gt;
	checkType(&amp;#039;addCategory&amp;#039;, 3, sortKey, &amp;#039;string&amp;#039;, true)&lt;br /&gt;
	if #name == 0 then error(defaults.missingNameMsg, 2) end&lt;br /&gt;
	if sortKey == nil or #sortKey == 0 then sortKey = nil end&lt;br /&gt;
&lt;br /&gt;
	--Add category to category list&lt;br /&gt;
	catList[name] = sortKey or true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Removes a category from the provided category list&lt;br /&gt;
function p.removeCategory(catList, name)&lt;br /&gt;
	--Check and normalize parameters&lt;br /&gt;
	checkType(&amp;#039;removeCategory&amp;#039;, 1, catList, &amp;#039;table&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;removeCategory&amp;#039;, 2, name, &amp;#039;string&amp;#039;)&lt;br /&gt;
	name = mw.text.trim(name)&lt;br /&gt;
	if #name == 0 then error(defaults.missingNameMsg, 2) end&lt;br /&gt;
&lt;br /&gt;
	--Remove category from category list&lt;br /&gt;
	catList[name] = nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Converts a category list to a string containing its categories as wikitext&lt;br /&gt;
function p.writeCategoryList(catList, nullify)&lt;br /&gt;
	checkType(&amp;#039;removeCategory&amp;#039;, 1, catList, &amp;#039;table&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;removeCategory&amp;#039;, 2, name, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
&lt;br /&gt;
	if nullify then return &amp;quot;&amp;quot; end&lt;br /&gt;
	&lt;br /&gt;
	local constructedList = {}&lt;br /&gt;
	for k, v in pairs(catList) do&lt;br /&gt;
		if (&lt;br /&gt;
			type(k) ~= &amp;quot;string&amp;quot; or&lt;br /&gt;
			(&lt;br /&gt;
				(type(v) ~= &amp;quot;boolean&amp;quot; or v == false) and&lt;br /&gt;
				(type(v) ~= &amp;quot;string&amp;quot;)&lt;br /&gt;
			)&lt;br /&gt;
		) then&lt;br /&gt;
			error(&lt;br /&gt;
				string.format(&lt;br /&gt;
					defaults.badCatListFormat,&lt;br /&gt;
					mw.dumpObject(k),&lt;br /&gt;
					mw.dumpObject(v)&lt;br /&gt;
				),&lt;br /&gt;
				2&lt;br /&gt;
			)	&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(&lt;br /&gt;
			constructedList,&lt;br /&gt;
			(v == true) and&lt;br /&gt;
				string.format(defaults.categoryForm, k) or&lt;br /&gt;
				string.format(defaults.keyedCategoryForm, k, v)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(constructedList)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Trialpears</name></author>
	</entry>
</feed>