Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

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;