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:Arbitration Committee open tasks

Permanently protected module
From Wikipedia, the free encyclopedia

local p = {}

local sub = mw.ustring.sub
local find = mw.ustring.find
local gmatch = mw.ustring.gmatch
local match = mw.ustring.match
local trim = mw.text.trim
local insert = table.insert
local concat = table.concat

function p.caserequests ( frame )
	frame = frame or mw.getCurrentFrame()
	local page = mw.title.new('Wikipedia:Arbitration/Requests/Case'):getContent()
	
	local re = '\n==%f[^=](.-)=='
	local sections = {}
	local count, loc = 0, 0
	repeat
		loc = find(page, re, loc+1)
		if (loc) then
			count = count + 1
			sections[count] = {
				id = count, 
				start = loc,
				title = trim(match(page, re, loc))
			}
		end
	until not loc
	
	for i=1, count, 1 do
		local sec = sections[i]
		local content = ''
		if sections[i+1] then
			content = sub( page, sec.start, sections[i+1].start )
		else
			content = sub( page, sec.start )
		end
		
		local redate = '%d%d?%s%a*%s%d%d%d%d%f[(%s%(UTC%)]'
		sec.date = match(content, redate)
		
		local remotion = '\n====?([^\n]*[Mm]otion[^\n]-)====?'
		local m = match(content, remotion)
		if (m) then 
			sec.motion = trim(m)
		end
		
		local revotes = '\n===[^\n]*<(%d+/%d+/%d+)>%s*==='
		sec.votes = match(content, revotes)
	end

	local result = {}
	for i=1, count, 1 do
		local sec = sections[i]
		local s = frame:expandTemplate{
			title = 'Arbitration Committee open tasks/line',
			args = {
				mode = 'caserequest',
				name = sec.title,
				date = sec.date,
				motion = sec.motion,
				votes = sec.votes
			}
		}
		insert(result, s)
	end
	
	return concat(result, '\n')
end

function p.arca ( frame )
	frame = frame or mw.getCurrentFrame()
	local page = mw.title.new('Wikipedia:Arbitration/Requests/Clarification and Amendment'):getContent()
	
	local re = '\n==%f[^=](.-)=='
	local sections = {}
	local count, loc = 0, 0
	repeat
		loc = find(page, re, loc+1)
		if (loc) then
			count = count + 1
			sections[count] = {
				id = count, 
				start = loc,
				title = trim(match(page, re, loc))
			}
		end
	until not loc
	
	for i=1, count, 1 do
		local sec = sections[i]
		local content = ''
		if sections[i+1] then
			content = sub( page, sec.start, sections[i+1].start )
		else
			content = sub( page, sec.start )
		end
		
		-- If the first signature seems to be from collapsing it, skip that sig
		content = mw.ustring.gsub( content, "{{.-}}%s*\'*Initiated by", "Initiated by", 1)
		
		local redate = '%d%d?%s%a*%s%d%d%d%d%f[(%s%(UTC%)]'
		sec.date = match(content, redate)

		local remotion = '\n====?([^\n]*[Mm]otion[^\n]-)====?'
		local m = match(content, remotion)
		if (m) then 
			sec.motion = trim(m)
		end
		
		local relink = '{{RFARlinks%|(.-)}}'
		sec.link = match(content, relink)
	end

	local result = {}
	for i=1, count, 1 do
		local sec = sections[i]
		local s = frame:expandTemplate{
			title = 'Arbitration Committee open tasks/line',
			args = {
				mode = 'amendment',
				name = sec.title,
				date = sec.date,
				motion = sec.motion,
				link = sec.link
			}
		}
		insert(result, s)
	end
	
	return concat(result, '\n')
end

function p.motions ( frame )
	frame = frame or mw.getCurrentFrame()
	local page = mw.title.new('Wikipedia:Arbitration/Requests/Motions'):getContent()
	local re = '\n==%f[^=](.-)=='
	local sections = {}
	local count, loc = 0, 0
	repeat
		loc = find(page, re, loc+1)
		if (loc) then
			count = count + 1
			sections[count] = {
				id = count, 
				start = loc,
				title = trim(match(page, re, loc))
			}
		end
	until not loc
	
	for i=1, count, 1 do
		local sec = sections[i]
		local content = ''
		if sections[i+1] then
			content = sub( page, sec.start, sections[i+1].start )
		else
			content = sub( page, sec.start )
		end
		
		-- If the first signature seems to be from collapsing it, skip that sig
		content = mw.ustring.gsub( content, "{{[^^].-}}", "", 1)
		
		local redate = '%d%d?%s%a*%s%d%d%d%d%f[(%s%(UTC%)]'
		sec.date = match(content, redate)
	end

	local result = {}
	for i=1, count, 1 do
		local sec = sections[i]
		local s = frame:expandTemplate{
			title = 'Arbitration Committee open tasks/line',
			args = {
				mode = 'motion',
				name = sec.title,
				date = sec.date,
			}
		}
		insert(result, s)
	end
	
	return concat(result, '\n')
end

return p