local p = {}
local sub = mw.ustring.sub
local find = mw.ustring.find
local gmatch = mw.ustring.gmatch
local trim = mw.text.trim
local prefix = 'Wikipedia:Arbitration/Requests/Case/'
local ptalk = 'Wikipedia talk:Arbitration/Requests/Case/'
function render ( tbl, count )
local output = ''
if (count > 0) then
local div = mw.html.create( 'div' )
div
:css( 'text-align', 'left' )
:wikitext( '<p>\n' .. table.concat(tbl, '</p><p>\n') .. '</p>\n' )
output = tostring( div )
else
output = "''none''"
end
return output
end
function p.dates( frame )
local case = frame.args[1] or frame.args.case
return p._dates( case )
end
function p._dates( case )
local page = prefix .. case
local pagecontent = mw.title.new(page):getContent()
local result = {}
local re = '\n<big>(.-)</big>'
for str in gmatch (pagecontent, re) do
table.insert(result, trim(str))
end
return render( result, 1 )
end
function p.decision( frame )
local case = frame.args[1] or frame.args.case
return p._decision( case )
end
function p._decision( case )
local page = prefix .. case
local pagecontent = mw.title.new(page):getContent()
local fdstart = find(pagecontent, '\n=%s*Final decision')
local fd = sub(pagecontent, fdstart)
local result = {}
local count = 0
local re = '\n==(.-)=='
for str in gmatch(fd, re) do
if find(str, '^%s*Enforcement') then
--ignore
else
if find(str, '^=') then
s = trim(sub(str, 2))
table.insert(result, ':[[' .. page .. '#' .. s .. '|' .. s .. ']]')
else
table.insert(result, "'''" .. str .. "'''")
end
count = count + 1
end
end
return render ( result, count )
end
function p.arca( frame )
local case = frame.args[1] or frame.args.case
return p._arca( case )
end
function p._arca( case )
local page = ptalk .. case
local pagecontent = mw.title.new(page):getContent()
local result = {}
local count = 0
local re = '\n==(.-)=='
for str in gmatch (pagecontent, re) do
str = trim(str)
if find(str, '^Amendment request')
or find(str, '^Clarification request') then
table.insert(result, '[[' .. page .. '#' .. str .. '|' .. str .. ']]')
count = count + 1
end
end
return render ( result, count )
end
function p.sections( frame )
local case = frame.args[1] or frame.args.case
return p._sections( case )
end
function p._sections( case )
local page = prefix .. case
local talkpage = ptalk .. case
local result = {}
function add (name)
local path = ''
if name then
path = '/' .. name
else
name = 'Case'
end
local title = mw.title.new(page .. path)
if (title.exists) then
table.insert(result,
'[[' .. page .. path .. '|' .. name .. ']]'
.. ' (' .. '[[' .. talkpage .. path .. '|' .. 'talk]])'
)
end
end
add()
add('Evidence')
add('Workshop')
add('Proposed decision')
return table.concat(result, ' • ')
end
return p