Module:DYK queue generator

From Wikipedia, the free encyclopedia
-- this is for a proof-of-concept in [[User:Theleekycauldron]]'s userspace.
local Date = require('Module:Date')._Date
local p = {};
local cfg = {};
local letters = "bcdefghijklmnopqrstuzwxyz";

p.main = function(frame)
	local now = Date('currentdate');
	local result = "";
	local base_queue_text = "===[[User:Theleekycauldron/Projects/Did you know/Queue/^d|Queue ^d]] <span class=\"plainlinks\"><small><small>[[{{fullurl:User:Theleekycauldron/Projects/Did you know/Queue/^d|action=edit}} edit]]</small></small></span>{{anchors|Queue ^d|Q^d}}===\n{{User:Theleekycauldron/Projects/Did you know/Queue/^d}}"
	local i=0;
	local queues_per_day = 1;
	local last_queue = "";
	local breaker=false;
	for d=0,49 do
		for n=0,queues_per_day-1 do
			local oper = '^dd'
			local date = now+oper:gsub("%^d",d)
			local queue = date:text('ymd')..letters:sub(n,n)
			if i>7 then -- limit the number of displayed queues to 7 or necessary, whichever is larger
				clear_size = mw.title.makeTitle("Template","Did you know/Clear"):getContent():len()
				
				queue_size = mw.title.makeTitle("User","Theleekycauldron/Projects/Did you know/Queue/" .. queue):getContent()
				if queue_size == nil then
					queue_size = 0
				else
					queue_size = queue_size:len()
				end
				
				last_queue_size = mw.title.makeTitle("User","Theleekycauldron/Projects/Did you know/Queue/" .. last_queue):getContent()
				if last_queue_size == nil then
					last_queue_size = 0
				else
					last_queue_size = last_queue_size:len()
				end
				
				if queue_size <= clear_size and last_queue_size <= clear_size then
					breaker = true;
					break;
				end
			end
			
			result = result .. base_queue_text:gsub("%^d",queue) .. "\n"
			i = i + 1;
			last_queue = queue
		end
		if breaker then
			break;
		end
	end
	return frame:preprocess(result);
end
return p;