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

			sectionscount = {

				id = count, 

				start = loc,

				title = trim(match(page, re, loc))

			}

		end

	until not loc

	

	for i=1, count, 1 do

		local sec = sectionsi

		local content = ''

		if sectionsi+1 then

			content = sub( page, sec.start, sectionsi+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 = sectionsi

		local s = frame:expandTemplate{

			title = 'ArbComOpenTasks/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

			sectionscount = {

				id = count, 

				start = loc,

				title = trim(match(page, re, loc))

			}

		end

	until not loc

	

	for i=1, count, 1 do

		local sec = sectionsi

		local content = ''

		if sectionsi+1 then

			content = sub( page, sec.start, sectionsi+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 relink = '{{RFARlinks%|(.-)}}'

		sec.link = match(content, relink)

	end



	local result = {}

	for i=1, count, 1 do

		local sec = sectionsi

		local s = frame:expandTemplate{

			title = 'ArbComOpenTasks/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

			sectionscount = {

				id = count, 

				start = loc,

				title = trim(match(page, re, loc))

			}

		end

	until not loc

	

	for i=1, count, 1 do

		local sec = sectionsi

		local content = ''

		if sectionsi+1 then

			content = sub( page, sec.start, sectionsi+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)

	end



	local result = {}

	for i=1, count, 1 do

		local sec = sectionsi

		local s = frame:expandTemplate{

			title = 'ArbComOpenTasks/line',

			args = {

				mode = 'motion',

				name = sec.title,

				date = sec.date,

			}

		}

		insert(result, s)

	end

	

	return concat(result, '\n')

end



return p