Module:ArbComOpenTasks/sandbox
< Module:ArbComOpenTasks
Revision as of 19:18, 8 July 2021 by Zoran (talk | contribs) (Moved page from wikipedia:en:Module:ArbComOpenTasks/sandbox)
Documentation for this module may be created at Module:ArbComOpenTasks/sandbox/doc
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