<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://test.st34an.tech/index.php?action=history&amp;feed=atom&amp;title=Module%3ACategory_tree%2Fposcatboiler%2Fdata</id>
	<title>Module:Category tree/poscatboiler/data - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://test.st34an.tech/index.php?action=history&amp;feed=atom&amp;title=Module%3ACategory_tree%2Fposcatboiler%2Fdata"/>
	<link rel="alternate" type="text/html" href="https://test.st34an.tech/index.php?title=Module:Category_tree/poscatboiler/data&amp;action=history"/>
	<updated>2026-04-10T17:37:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://test.st34an.tech/index.php?title=Module:Category_tree/poscatboiler/data&amp;diff=67&amp;oldid=prev</id>
		<title>Jsrs701: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://test.st34an.tech/index.php?title=Module:Category_tree/poscatboiler/data&amp;diff=67&amp;oldid=prev"/>
		<updated>2026-04-10T07:25:51Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;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 07:25, 10 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key mediawikidb:diff:1.41:old-66:rev-67 --&gt;
&lt;/table&gt;</summary>
		<author><name>Jsrs701</name></author>
	</entry>
	<entry>
		<id>https://test.st34an.tech/index.php?title=Module:Category_tree/poscatboiler/data&amp;diff=66&amp;oldid=prev</id>
		<title>bob&gt;Djpwikiadmin: Reverted edits by Djpwikiadmin (talk) to last revision by Djp</title>
		<link rel="alternate" type="text/html" href="https://test.st34an.tech/index.php?title=Module:Category_tree/poscatboiler/data&amp;diff=66&amp;oldid=prev"/>
		<updated>2023-09-03T06:01:50Z</updated>

		<summary type="html">&lt;p&gt;Reverted edits by &lt;a href=&quot;/index.php?title=Special:Contributions/Djpwikiadmin&quot; title=&quot;Special:Contributions/Djpwikiadmin&quot;&gt;Djpwikiadmin&lt;/a&gt; (&lt;a href=&quot;/index.php?title=User_talk:Djpwikiadmin&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User talk:Djpwikiadmin (page does not exist)&quot;&gt;talk&lt;/a&gt;) to last revision by &lt;a href=&quot;/index.php?title=User:Djp&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Djp (page does not exist)&quot;&gt;Djp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local labels = {}&lt;br /&gt;
local raw_categories = {}&lt;br /&gt;
local handlers = {}&lt;br /&gt;
local raw_handlers = {}&lt;br /&gt;
&lt;br /&gt;
local subpages = {&lt;br /&gt;
	&amp;quot;characters&amp;quot;,&lt;br /&gt;
	&amp;quot;entry maintenance&amp;quot;,&lt;br /&gt;
	&amp;quot;families&amp;quot;,&lt;br /&gt;
	&amp;quot;figures of speech&amp;quot;,&lt;br /&gt;
	&amp;quot;languages&amp;quot;,&lt;br /&gt;
	&amp;quot;lemmas&amp;quot;,&lt;br /&gt;
	&amp;quot;miscellaneous&amp;quot;,&lt;br /&gt;
	&amp;quot;modules&amp;quot;,&lt;br /&gt;
	&amp;quot;names&amp;quot;,&lt;br /&gt;
	&amp;quot;non-lemma forms&amp;quot;,&lt;br /&gt;
	&amp;quot;phrases&amp;quot;,&lt;br /&gt;
	&amp;quot;rhymes&amp;quot;,&lt;br /&gt;
	&amp;quot;scripts&amp;quot;,&lt;br /&gt;
	&amp;quot;shortenings&amp;quot;,&lt;br /&gt;
	&amp;quot;symbols&amp;quot;,&lt;br /&gt;
	&amp;quot;templates&amp;quot;,&lt;br /&gt;
	&amp;quot;terms by etymology&amp;quot;,&lt;br /&gt;
	&amp;quot;terms by grammatical category&amp;quot;,&lt;br /&gt;
	&amp;quot;terms by lexical property&amp;quot;,&lt;br /&gt;
	&amp;quot;terms by semantic function&amp;quot;,&lt;br /&gt;
	&amp;quot;terms by script&amp;quot;,&lt;br /&gt;
	&amp;quot;terms by usage&amp;quot;,&lt;br /&gt;
	&amp;quot;transliterations&amp;quot;,&lt;br /&gt;
	&amp;quot;unicode&amp;quot;,&lt;br /&gt;
	&amp;quot;word of the day&amp;quot;,&lt;br /&gt;
	&amp;quot;words by number of syllables&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Import subpages&lt;br /&gt;
for _, subpage in ipairs(subpages) do&lt;br /&gt;
	local datamodule = &amp;quot;Module:category tree/poscatboiler/data/&amp;quot; .. subpage&lt;br /&gt;
	local retval = require(datamodule)&lt;br /&gt;
	if retval[&amp;quot;LABELS&amp;quot;] then&lt;br /&gt;
		for label, data in pairs(retval[&amp;quot;LABELS&amp;quot;]) do&lt;br /&gt;
			if labels[label] and not retval[&amp;quot;IGNOREDUP&amp;quot;] then&lt;br /&gt;
				error(&amp;quot;Label &amp;quot; .. label .. &amp;quot; defined in both [[&amp;quot;&lt;br /&gt;
					.. datamodule .. &amp;quot;]] and [[&amp;quot; .. labels[label].module .. &amp;quot;]].&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			data.module = datamodule&lt;br /&gt;
			labels[label] = data&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if retval[&amp;quot;RAW_CATEGORIES&amp;quot;] then&lt;br /&gt;
		for category, data in pairs(retval[&amp;quot;RAW_CATEGORIES&amp;quot;]) do&lt;br /&gt;
			if raw_categories[category] and not retval[&amp;quot;IGNOREDUP&amp;quot;] then&lt;br /&gt;
				error(&amp;quot;Raw category &amp;quot; .. category .. &amp;quot; defined in both [[&amp;quot;&lt;br /&gt;
					.. datamodule .. &amp;quot;]] and [[&amp;quot; .. raw_categories[category].module .. &amp;quot;]].&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			data.module = datamodule&lt;br /&gt;
			raw_categories[category] = data&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if retval[&amp;quot;HANDLERS&amp;quot;] then&lt;br /&gt;
		for _, handler in ipairs(retval[&amp;quot;HANDLERS&amp;quot;]) do&lt;br /&gt;
			table.insert(handlers, { module = datamodule, handler = handler })&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if retval[&amp;quot;RAW_HANDLERS&amp;quot;] then&lt;br /&gt;
		for _, handler in ipairs(retval[&amp;quot;RAW_HANDLERS&amp;quot;]) do&lt;br /&gt;
			table.insert(raw_handlers, { module = datamodule, handler = handler })&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Add child categories to their parents&lt;br /&gt;
local function add_children_to_parents(hierarchy, raw)&lt;br /&gt;
	for key, data in pairs(hierarchy) do&lt;br /&gt;
		local parents = data.parents&lt;br /&gt;
		if parents then&lt;br /&gt;
			if type(parents) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
				parents = {parents}&lt;br /&gt;
			end&lt;br /&gt;
			if parents.name or parents.module then&lt;br /&gt;
				parents = {parents}&lt;br /&gt;
			end&lt;br /&gt;
			for _, parent in ipairs(parents) do&lt;br /&gt;
				if type(parent) ~= &amp;quot;table&amp;quot; or not parent.name and not parent.module then&lt;br /&gt;
					parent = {name = parent}&lt;br /&gt;
				end&lt;br /&gt;
				if parent.name and not parent.module and type(parent.name) == &amp;quot;string&amp;quot; and not parent.name:find(&amp;quot;^Category:&amp;quot;) then&lt;br /&gt;
					local parent_is_raw&lt;br /&gt;
					if raw then&lt;br /&gt;
						parent_is_raw = not parent.is_label&lt;br /&gt;
					else&lt;br /&gt;
						parent_is_raw = parent.raw&lt;br /&gt;
					end&lt;br /&gt;
					-- Don&amp;#039;t do anything if the child is raw and the parent is lang-specific,&lt;br /&gt;
					-- otherwise e.g. &amp;quot;Lemmas subcategories by language&amp;quot; will be listed as a&lt;br /&gt;
					-- child of every &amp;quot;LANG lemmas&amp;quot; category.&lt;br /&gt;
					-- FIXME: We need to rethink this mechanism.&lt;br /&gt;
					if not raw or parent_is_raw then&lt;br /&gt;
						local child_hierarchy = parent_is_raw and raw_categories or labels&lt;br /&gt;
						if child_hierarchy[parent.name] then&lt;br /&gt;
							local child = {name = key, sort = parent.sort, raw = raw}&lt;br /&gt;
							if child_hierarchy[parent.name].children then&lt;br /&gt;
								table.insert(child_hierarchy[parent.name].children, child)&lt;br /&gt;
							else&lt;br /&gt;
								child_hierarchy[parent.name].children = {child}&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
add_children_to_parents(labels)&lt;br /&gt;
add_children_to_parents(raw_categories, true)&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	LABELS = labels, RAW_CATEGORIES = raw_categories,&lt;br /&gt;
	HANDLERS = handlers, RAW_HANDLERS = raw_handlers&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>bob&gt;Djpwikiadmin</name></author>
	</entry>
</feed>