<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.geministation.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AImage_categories</id>
	<title>Module:Image categories - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.geministation.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AImage_categories"/>
	<link rel="alternate" type="text/html" href="https://wiki.geministation.com/index.php?title=Module:Image_categories&amp;action=history"/>
	<updated>2026-06-04T11:45:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.geministation.com/index.php?title=Module:Image_categories&amp;diff=7588&amp;oldid=prev</id>
		<title>Banri at 20:19, 22 January 2021</title>
		<link rel="alternate" type="text/html" href="https://wiki.geministation.com/index.php?title=Module:Image_categories&amp;diff=7588&amp;oldid=prev"/>
		<updated>2021-01-22T20:19:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:19, 22 January 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot;&gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local category_map = {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local category_map = {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	--  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	-- &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Items&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	[&#039;Items&#039;] = &#039;Detailed item imagesss&#039;,&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	--  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	--  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Banri</name></author>
	</entry>
	<entry>
		<id>https://wiki.geministation.com/index.php?title=Module:Image_categories&amp;diff=7587&amp;oldid=prev</id>
		<title>Banri: Created page with &quot;-- &lt;pre&gt;  -- TODO: -- add event categories  local p = {}  local category_map = { 	--   	--   	--  	 	--   	--   	--   	-- Misc }  local directCategories = {  	-- errors 	&#039;Lice...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.geministation.com/index.php?title=Module:Image_categories&amp;diff=7587&amp;oldid=prev"/>
		<updated>2021-01-22T20:16:55Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- &amp;lt;pre&amp;gt;  -- TODO: -- add event categories  local p = {}  local category_map = { 	--   	--   	--  	 	--   	--   	--   	-- Misc }  local directCategories = {  	-- errors 	&amp;#039;Lice...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- &amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- TODO:&lt;br /&gt;
-- add event categories&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local category_map = {&lt;br /&gt;
	-- &lt;br /&gt;
&lt;br /&gt;
	-- &lt;br /&gt;
&lt;br /&gt;
	-- &lt;br /&gt;
	&lt;br /&gt;
	-- &lt;br /&gt;
&lt;br /&gt;
	-- &lt;br /&gt;
&lt;br /&gt;
	-- &lt;br /&gt;
&lt;br /&gt;
	-- Misc&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local directCategories = {&lt;br /&gt;
&lt;br /&gt;
	-- errors&lt;br /&gt;
	&amp;#039;Licenses with a non-existent subject&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local formats = {&lt;br /&gt;
	list = &amp;#039;* [[:Category:%s|%s]]&amp;#039;,&lt;br /&gt;
	names = &amp;#039;[[:Category:%s|%s]] &amp;#039;,&lt;br /&gt;
	default = &amp;#039;[[Category:%s]]&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local nilpage = &amp;#039;random text that wont be a page&amp;#039;&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	-- arguments&lt;br /&gt;
	-- may need to rework later&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
&lt;br /&gt;
	local ttl = mw.title.new(args[1])&lt;br /&gt;
&lt;br /&gt;
	if not ttl then&lt;br /&gt;
		return &amp;#039;[[Category:Licenses with a non-existent subject]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ttl.isRedirect then&lt;br /&gt;
		ttl = frame:preprocess([==[{{safesubst:#dpl:&lt;br /&gt;
			|noresultsheader=[[:Category:Licenses with a non-existent subject|ERROR]]&lt;br /&gt;
			|namespace=&lt;br /&gt;
			|linksfrom=]==]..&lt;br /&gt;
				(args[1] or nilpage)..&lt;br /&gt;
			[==[&lt;br /&gt;
			|ignorecase=true&lt;br /&gt;
			|count=1&lt;br /&gt;
			|format=,%TITLE%&lt;br /&gt;
			}}]==])&lt;br /&gt;
	else&lt;br /&gt;
		ttl = args[1] or nilpage&lt;br /&gt;
	end&lt;br /&gt;
	-- get text of the categories to add&lt;br /&gt;
	local txt = frame:preprocess([==[{{safesubst:#dpl:&lt;br /&gt;
		|noresultsheader=[[:Category:Licenses with a non-existent subject|ERROR]]&lt;br /&gt;
		|namespace=&lt;br /&gt;
		|title=]==]..&lt;br /&gt;
			ttl..&lt;br /&gt;
		[==[&lt;br /&gt;
		|ignorecase=true&lt;br /&gt;
		|addcategories=true&lt;br /&gt;
		|count=1&lt;br /&gt;
		|format=,%CATLIST%&lt;br /&gt;
		}}]==])&lt;br /&gt;
&lt;br /&gt;
	-- get desired format from user&lt;br /&gt;
	-- default to adding categories&lt;br /&gt;
	local frm = mw.text.trim(string.lower(args.format or &amp;#039;&amp;#039;))&lt;br /&gt;
	frm = formats[frm] or formats.default&lt;br /&gt;
&lt;br /&gt;
	-- table of categories to add&lt;br /&gt;
	local tbl = {}&lt;br /&gt;
&lt;br /&gt;
	-- for every category listed, find it and add to overall table&lt;br /&gt;
	for v in string.gmatch(txt,&amp;#039;%[%[:Category:(.-)%|&amp;#039;) do&lt;br /&gt;
		local s = string.gsub(v,&amp;#039;_&amp;#039;,&amp;#039; &amp;#039;)&lt;br /&gt;
		table.insert(tbl,s)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- get a list of all mission categories&lt;br /&gt;
	local mission = frame:preprocess([==[{{safesubst:#dpl:&lt;br /&gt;
		|noresultsheader=&lt;br /&gt;
		|namespace=Category&lt;br /&gt;
		|category=Mission related entities&lt;br /&gt;
		|count=&lt;br /&gt;
		|format=,%TITLE%¦&lt;br /&gt;
		}}]==])&lt;br /&gt;
&lt;br /&gt;
	-- trim whitespace&lt;br /&gt;
	missions = mw.text.trim(missions)&lt;br /&gt;
&lt;br /&gt;
	-- delete unneeded delimiter&lt;br /&gt;
	missions = string.gsub(missions,&amp;#039;|$&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- split into array&lt;br /&gt;
	missions = mw.text.split(missions,&amp;#039;|&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	local adddirect = {}&lt;br /&gt;
&lt;br /&gt;
	-- set each mission name as a valid category&lt;br /&gt;
	for _, v in ipairs(missions) do&lt;br /&gt;
		adddirect[v] = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- set specified direct to add categories as valid&lt;br /&gt;
	for _, v in ipairs(directCategories) do&lt;br /&gt;
		adddirect[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	-- return list&lt;br /&gt;
	local ret = {}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	for _, v in ipairs(tbl) do&lt;br /&gt;
		local cat_v = mw.text.trim(v)&lt;br /&gt;
		local catmapped = category_map[cat_v]&lt;br /&gt;
		-- map all categories to other categories&lt;br /&gt;
		if catmapped then&lt;br /&gt;
			table.insert(ret,string.format(frm,catmapped,catmapped))&lt;br /&gt;
		-- for everything that&amp;#039;s in a directadd category, add that exact category&lt;br /&gt;
		elseif adddirect[cat_v] then&lt;br /&gt;
			table.insert(ret,string.format(frm,cat_v,cat_v))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	ret = table.concat(ret,&amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.list(frame)&lt;br /&gt;
	local retList = {}&lt;br /&gt;
	for w, v in pairs(category_map) do&lt;br /&gt;
		table.insert(retList, { w, v })&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs(directCategories) do&lt;br /&gt;
		table.insert(retList, { v, v })&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- get a list of all mission categories&lt;br /&gt;
	local missions = frame:preprocess([[{{safesubst:#dpl:&lt;br /&gt;
		|noresultsheader=&lt;br /&gt;
		|namespace=Category&lt;br /&gt;
		|category=Mission related entities&lt;br /&gt;
		|count=&lt;br /&gt;
		|format=,%TITLE%¦&lt;br /&gt;
		}}]])&lt;br /&gt;
&lt;br /&gt;
	-- trim whitespace&lt;br /&gt;
	missions = mw.text.trim(missions)&lt;br /&gt;
&lt;br /&gt;
	-- delete unneeded delimiter&lt;br /&gt;
	missions = string.gsub(missions,&amp;#039;|$&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- split into array&lt;br /&gt;
	missions = mw.text.split(missions,&amp;#039;|&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- set each mission name as a valid category&lt;br /&gt;
	for _, v in ipairs(missions) do&lt;br /&gt;
		table.insert(retList, { v, v })&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    -- sort alphabetically&lt;br /&gt;
    table.sort(retList,&lt;br /&gt;
        function(a,b)&lt;br /&gt;
            local _a = string.lower(a[1])&lt;br /&gt;
            local _b = string.lower(b[1])&lt;br /&gt;
 &lt;br /&gt;
            -- remove articles at front&lt;br /&gt;
            _a = string.gsub(_a,&amp;#039;^the &amp;#039;,&amp;#039;&amp;#039;):gsub(&amp;#039;^an? &amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
            _b = string.gsub(_b,&amp;#039;^the &amp;#039;,&amp;#039;&amp;#039;):gsub(&amp;#039;^an? &amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
 &lt;br /&gt;
            return _a &amp;lt; _b&lt;br /&gt;
        end&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
	local ret =&lt;br /&gt;
	mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;border-collapse&amp;#039;,&amp;#039;collapse&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;border-bottom&amp;#039;,&amp;#039;3px solid #000&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;border-bottom&amp;#039;,&amp;#039;inherit&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;Subject category&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;border-bottom&amp;#039;,&amp;#039;inherit&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;border-bottom&amp;#039;,&amp;#039;inherit&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;Image category&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs(retList) do&lt;br /&gt;
		ret	:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
				:css({ [&amp;#039;border-bottom&amp;#039;] = &amp;#039;1px dotted #999&amp;#039;,&lt;br /&gt;
					background = (v[1] == v[2]) and &amp;#039;#C9FFD2&amp;#039; or &amp;#039;&amp;#039; })&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;border-bottom&amp;#039;,&amp;#039;inherit&amp;#039;)&lt;br /&gt;
					:wikitext(string.format(&amp;#039;[[:Category:%s|%s]]&amp;#039;,v[1],v[1]))&lt;br /&gt;
				:done()&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;border-bottom&amp;#039;,&amp;#039;inherit&amp;#039;)&lt;br /&gt;
					:tag(&amp;#039;b&amp;#039;)&lt;br /&gt;
						:wikitext(&amp;#039;→&amp;#039;)&lt;br /&gt;
					:done()&lt;br /&gt;
				:done()&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:css({ [&amp;#039;text-align&amp;#039;] = &amp;#039;right&amp;#039;,&lt;br /&gt;
						[&amp;#039;border-bottom&amp;#039;] = &amp;#039;inherit&amp;#039; })&lt;br /&gt;
					:wikitext(string.format(&amp;#039;[[:Category:%s|%s]]&amp;#039;,v[2],v[2]))&lt;br /&gt;
				:done()&lt;br /&gt;
			:done()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Banri</name></author>
	</entry>
</feed>