<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.tachyony.co.uk/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AXfD_old</id>
	<title>Module:XfD old - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tachyony.co.uk/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AXfD_old"/>
	<link rel="alternate" type="text/html" href="https://wiki.tachyony.co.uk/w/index.php?title=Module:XfD_old&amp;action=history"/>
	<updated>2026-05-15T11:10:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://wiki.tachyony.co.uk/w/index.php?title=Module:XfD_old&amp;diff=5765&amp;oldid=prev</id>
		<title>Tachyony: Created page with &quot;local p = {} local tableTools = require(&quot;Module:TableTools&quot;) local ymd = require(&quot;Module:YMD to ISO&quot;)._main local lang = mw.getContentLanguage() local function getlog(name)  	 -- Files for discussion has no /Log/ in the title for some reason, so it is optional 	 return mw.ustring.match(name, &quot;Log/(.*)&quot;) or mw.ustring.match(name, &quot;/(.*)&quot;) end function sortkey(name1, name2) 	local key1 = ymd(getlog(name1)) 	local key2 = ymd(getlog(name2)) 	return key1 &gt; key2 end function p...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.tachyony.co.uk/w/index.php?title=Module:XfD_old&amp;diff=5765&amp;oldid=prev"/>
		<updated>2022-01-15T01:19:59Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {} local tableTools = require(&amp;quot;Module:TableTools&amp;quot;) local ymd = require(&amp;quot;Module:YMD to ISO&amp;quot;)._main local lang = mw.getContentLanguage() local function getlog(name)  	 -- Files for discussion has no /Log/ in the title for some reason, so it is optional 	 return mw.ustring.match(name, &amp;quot;Log/(.*)&amp;quot;) or mw.ustring.match(name, &amp;quot;/(.*)&amp;quot;) end function sortkey(name1, name2) 	local key1 = ymd(getlog(name1)) 	local key2 = ymd(getlog(name2)) 	return key1 &amp;gt; key2 end function p...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local tableTools = require(&amp;quot;Module:TableTools&amp;quot;)&lt;br /&gt;
local ymd = require(&amp;quot;Module:YMD to ISO&amp;quot;)._main&lt;br /&gt;
local lang = mw.getContentLanguage()&lt;br /&gt;
local function getlog(name) &lt;br /&gt;
	 -- Files for discussion has no /Log/ in the title for some reason, so it is optional&lt;br /&gt;
	 return mw.ustring.match(name, &amp;quot;Log/(.*)&amp;quot;) or mw.ustring.match(name, &amp;quot;/(.*)&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
function sortkey(name1, name2)&lt;br /&gt;
	local key1 = ymd(getlog(name1))&lt;br /&gt;
	local key2 = ymd(getlog(name2))&lt;br /&gt;
	return key1 &amp;gt; key2&lt;br /&gt;
end&lt;br /&gt;
function p._main(frame, makeoutput)&lt;br /&gt;
	local t = frame.args.title or frame:getParent():getTitle()&lt;br /&gt;
	local content = mw.title.new(t .. &amp;quot;/Old unclosed discussions&amp;quot;):getContent()&lt;br /&gt;
	local m = mw.ustring.gmatch(content, &amp;quot;* %[%[(&amp;quot; .. t .. &amp;quot;/L?o?g?/?[^#]*)#%{%{anchorencode:([^}]*)&amp;quot;)&lt;br /&gt;
	local seen = {}&lt;br /&gt;
	while true do&lt;br /&gt;
		local logpage, header = m()&lt;br /&gt;
		if not logpage then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		if seen[logpage] == nil then&lt;br /&gt;
			seen[logpage] = {}&lt;br /&gt;
		end&lt;br /&gt;
		seen[logpage][#seen[logpage]+1] = header&lt;br /&gt;
	end&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	for k, v in tableTools.sortedPairs(seen, sortkey) do&lt;br /&gt;
		out = out .. (makeoutput(k, v) or &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return mw.text.trim(out)&lt;br /&gt;
end&lt;br /&gt;
function p.list(frame) &lt;br /&gt;
	local function listoutput(k, v)  &lt;br /&gt;
		return &amp;quot;* [[&amp;quot; .. k .. &amp;quot;]] (&amp;quot; .. tostring(#v) .. &amp;quot; open) \n&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(frame, listoutput)&lt;br /&gt;
end&lt;br /&gt;
function p.onemonth(frame) &lt;br /&gt;
	local month = frame.args.month&lt;br /&gt;
	if not month then&lt;br /&gt;
		error(&amp;quot;|month= is required&amp;quot;)&lt;br /&gt;
	elseif month ~= lang:formatDate(&amp;quot;F Y&amp;quot;,month) then&lt;br /&gt;
		error(&amp;quot;Illegal month format&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	local count = 0&lt;br /&gt;
	local function bymonthoutput(k, v)&lt;br /&gt;
		if lang:formatDate(&amp;quot;F Y&amp;quot;,ymd(getlog(k))) == month then&lt;br /&gt;
			count = count + #v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	p._main(frame, bymonthoutput)&lt;br /&gt;
	return count&lt;br /&gt;
end&lt;br /&gt;
function p.transclude(frame) &lt;br /&gt;
	local function transoutput(k, v)&lt;br /&gt;
		local out = &amp;quot;&amp;quot;&lt;br /&gt;
		out = out .. &amp;quot;=== [[&amp;quot; .. k .. &amp;quot;|&amp;quot; .. getlog(k):sub(5) .. &amp;quot;]] ===\n&amp;quot;&lt;br /&gt;
		local logContent = mw.title.new(k):getContent()&lt;br /&gt;
		local editSections = {}&lt;br /&gt;
		local i = 0&lt;br /&gt;
		for heading in mw.ustring.gmatch(&amp;quot;\n&amp;quot; .. logContent, &amp;quot;\n==+([^\n]-)==+\n&amp;quot;) do &lt;br /&gt;
			i = i + 1&lt;br /&gt;
			editSections[mw.text.trim(heading)] = i&lt;br /&gt;
		end&lt;br /&gt;
		for _, discussion in pairs(v) do&lt;br /&gt;
			out = out .. &amp;quot;==== &amp;quot; .. discussion .. &amp;quot; ====\n&amp;quot;&lt;br /&gt;
			local section = editSections[discussion]&lt;br /&gt;
			if section ~= nil then&lt;br /&gt;
				out = out .. &amp;quot;&amp;lt;span class=\&amp;quot;noprint plainlinks xfdOldSectionEdit\&amp;quot; style=\&amp;quot;float:right;position:relative;top:-2em;\&amp;quot; title=\&amp;quot;Edit discussion\&amp;quot;&amp;gt;[&amp;lt;!-- --&amp;gt;[//en.wikipedia.org/w/index.php?title=&amp;quot; .. k:gsub(&amp;quot; &amp;quot;, &amp;quot;_&amp;quot;) .. &amp;quot;&amp;amp;action=edit&amp;amp;section=&amp;quot; .. section .. &amp;quot; edit]&amp;lt;!-- --&amp;gt;]&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			out = out .. frame:callParserFunction(&amp;quot;#section-h&amp;quot;, k, discussion)&lt;br /&gt;
			out = out .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(frame, transoutput)&lt;br /&gt;
end&lt;br /&gt;
function p.total(frame) &lt;br /&gt;
	local total = 0&lt;br /&gt;
	local function dototal(k, v) &lt;br /&gt;
		total = total + #v&lt;br /&gt;
	end&lt;br /&gt;
	p._main(frame, dototal)&lt;br /&gt;
	return total&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Tachyony</name></author>
	</entry>
</feed>