Module:ArbComOpenTasks
Appearance
| This module is rated as beta. It is considered ready for widespread use, but as it is still relatively new, it should be applied with some caution to ensure results are as expected. |
| Editing of this module by new or unregistered users is currently disabled. See the protection policy and protection log for more details. If you cannot edit this module and you wish to make a change, you can submit an edit request, discuss changes on the talk page, request unprotection, log in, or create an account. |
| This Lua module is used on approximately 120 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
Usage
- Use
{{#invoke:ArbComOpenTasks|caserequests}}to get a list of open case requests - Use
{{#invoke:ArbComOpenTasks|arca}}to get a list of open amendment and clarification requests - Use
{{#invoke:ArbComOpenTasks|motions}}to get a list of open arbitrator motions
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 = '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
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 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 = '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
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)
end
local result = {}
for i=1, count, 1 do
local sec = sections[i]
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