<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.you107657.duckdns.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AMain_page</id>
	<title>Module:Main page - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.you107657.duckdns.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AMain_page"/>
	<link rel="alternate" type="text/html" href="https://wiki.you107657.duckdns.org/index.php?title=Module:Main_page&amp;action=history"/>
	<updated>2026-09-25T17:55:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.you107657.duckdns.org/index.php?title=Module:Main_page&amp;diff=5360&amp;oldid=prev</id>
		<title>imported&gt;Merge: merge.py</title>
		<link rel="alternate" type="text/html" href="https://wiki.you107657.duckdns.org/index.php?title=Module:Main_page&amp;diff=5360&amp;oldid=prev"/>
		<updated>2026-09-25T10:55:52Z</updated>

		<summary type="html">&lt;p&gt;merge.py&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local trim = mw.text.trim&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	&lt;br /&gt;
	-- DEBUG&lt;br /&gt;
	-- local frame = mw.getCurrentFrame()&lt;br /&gt;
	-- frame.args[&amp;#039;desktop&amp;#039;] = &amp;#039;\nwelcome welcome welcome\nabout about links\n&amp;#039;&lt;br /&gt;
	-- frame.args[&amp;#039;tablet&amp;#039;] = &amp;#039;\nwelcome welcome\nabout links\n&amp;#039;&lt;br /&gt;
	-- frame.args[&amp;#039;mobile&amp;#039;] = &amp;#039;\nwelcome\nabout\nlinks\n&amp;#039;&lt;br /&gt;
	-- END DEBUG&lt;br /&gt;
&lt;br /&gt;
	local sitename = frame:preprocess(mw.message.new(&amp;#039;mainpage&amp;#039;):plain())&lt;br /&gt;
	&lt;br /&gt;
	-- parse the arguments into CSS variables that contain legal syntax for grid-template-areas&lt;br /&gt;
	local desktop = &amp;quot;--main-page-layout--desktop: &amp;#039;&amp;quot; .. string.gsub(trim(frame.args[&amp;#039;desktop&amp;#039;]), &amp;#039;\n&amp;#039;, &amp;quot;&amp;#039; &amp;#039;&amp;quot;) .. &amp;quot;&amp;#039;;&amp;quot;&lt;br /&gt;
	local tablet =  &amp;quot;--main-page-layout--tablet: &amp;#039;&amp;quot;  .. string.gsub(trim(frame.args[&amp;#039;tablet&amp;#039; ]), &amp;#039;\n&amp;#039;, &amp;quot;&amp;#039; &amp;#039;&amp;quot;) .. &amp;quot;&amp;#039;;&amp;quot;&lt;br /&gt;
	local mobile =  &amp;quot;--main-page-layout--mobile: &amp;#039;&amp;quot;  .. string.gsub(trim(frame.args[&amp;#039;mobile&amp;#039; ]), &amp;#039;\n&amp;#039;, &amp;quot;&amp;#039; &amp;#039;&amp;quot;) .. &amp;quot;&amp;#039;;&amp;quot;&lt;br /&gt;
	-- grid-template-columns&lt;br /&gt;
	local desktop_cols = trim(string.gsub(frame.args[&amp;#039;desktop-columns&amp;#039;] or &amp;#039;&amp;#039;, &amp;#039;;&amp;#039;, &amp;#039;&amp;#039;))&lt;br /&gt;
	local  tablet_cols = trim(string.gsub(frame.args[ &amp;#039;tablet-columns&amp;#039;] or &amp;#039;&amp;#039;, &amp;#039;;&amp;#039;, &amp;#039;&amp;#039;))&lt;br /&gt;
	local  mobile_cols = trim(string.gsub(frame.args[ &amp;#039;mobile-columns&amp;#039;] or &amp;#039;&amp;#039;, &amp;#039;;&amp;#039;, &amp;#039;&amp;#039;))&lt;br /&gt;
	if desktop_cols ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		desktop = desktop .. &amp;#039;--main-page-layout-columns--desktop: &amp;#039;.. desktop_cols ..&amp;#039;;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if tablet_cols ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		tablet = tablet .. &amp;#039;--main-page-layout-columns--tablet: &amp;#039;.. tablet_cols ..&amp;#039;;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if mobile_cols ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		mobile = mobile .. &amp;#039;--main-page-layout-columns--mobile: &amp;#039;.. mobile_cols ..&amp;#039;;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local boxes = {}&lt;br /&gt;
	&lt;br /&gt;
	-- helper function for the next part, checks if an array-like table contains a value&lt;br /&gt;
	function contains(t, entry)&lt;br /&gt;
		for _,value in pairs(t) do&lt;br /&gt;
			if value == entry then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- add every box referenced in the layout rules once&lt;br /&gt;
	-- we check all 3 layouts so that typos or other errors will clearly surface&lt;br /&gt;
	for _,value in pairs(mw.text.split(mw.text.trim(frame.args[&amp;#039;desktop&amp;#039;] .. &amp;#039;\n&amp;#039; .. frame.args[&amp;#039;tablet&amp;#039;] .. &amp;#039;\n&amp;#039; .. frame.args[&amp;#039;mobile&amp;#039;]), &amp;#039;%s&amp;#039;)) do&lt;br /&gt;
		if not (value == &amp;quot;&amp;quot; or contains(boxes, value)) then&lt;br /&gt;
			table.insert(boxes, value)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- mw.logObject(boxes)&lt;br /&gt;
	&lt;br /&gt;
	-- start our mp-container wrapper, and add our variables from earlier as inline styles to declare them&lt;br /&gt;
	-- the sitename is added to the dataset so it&amp;#039;s easily accessible by mp-edit-links.js and it doesn&amp;#039;t need to make its own API call&lt;br /&gt;
	local output = &amp;#039;&amp;lt;div id=&amp;quot;mp-container&amp;quot; style=&amp;quot;&amp;#039; .. desktop .. tablet .. mobile .. &amp;#039;&amp;quot; data-sitename=&amp;quot;&amp;#039; .. sitename .. &amp;#039;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	-- loop through boxes and add the relevant main page subpages into the output&lt;br /&gt;
	for _,box in pairs(boxes) do&lt;br /&gt;
		if mw.title.new(sitename .. &amp;#039;/&amp;#039; .. box).exists then&lt;br /&gt;
			output = output .. frame:expandTemplate{ title =  &amp;#039;:&amp;#039; .. sitename .. &amp;#039;/&amp;#039; .. box}&lt;br /&gt;
		else&lt;br /&gt;
			output = output .. frame:expandTemplate{ title = &amp;#039;Main page box/missing&amp;#039;, args = { box } } -- See [[Template:Main page box/missing]]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	output = output .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Merge</name></author>
	</entry>
</feed>