local function remove_wiki_link (str)
return (str:gsub( "%[%[([^%[%]]*)%]%]", function(l)
return l:gsub( "^[^|]*|(.*)$", "%1" ):gsub("^%s*(.-)%s*$", "%1");
end));
end
local function main (frame)
local user = frame.args[1]
local page = {
[1] = "Wikipedia:List of Wikipedians by number of edits/1–1000",
[2] = "Wikipedia:List of Wikipedians by number of edits/1001–2000",
[3] = "Wikipedia:List of Wikipedians by number of edits/2001–3000",
[4] = "Wikipedia:List of Wikipedians by number of edits/3001–4000",
[5] = "Wikipedia:List of Wikipedians by number of edits/4001–5000",
[6] = "Wikipedia:List of Wikipedians by number of edits/5001–6000",
[7] = "Wikipedia:List of Wikipedians by number of edits/6001–7000",
[8] = "Wikipedia:List of Wikipedians by number of edits/7001–8000",
[9] = "Wikipedia:List of Wikipedians by number of edits/8001–9000",
[10] = "Wikipedia:List of Wikipedians by number of edits/9001–10000",
}
local i = 1
local content
repeat
content = mw.title.new (page[i]):getContent();
if string.find(content, "|"..user.."]]\n") or string.find(content, "| "..user.."\n") then
pgnum = i
else
if i == 10 then
pgnum = 0
else
pgnum = nil
end
end
i = i + 1
until ((pgnum == i - 1) or (pgnum == 0))
if pgnum == 0 then
outputRank = "nil"
outputName = user
outputCount = "nil"
else
for rank, name, count in string.gmatch(content, "|%-\n|%s(.-)\n|%s(.-)\n|%s(.-)\n") do
rank = mw.text.trim(rank)
name = mw.text.trim(name)
count = mw.text.trim(count)
name = remove_wiki_link (name)
if name == user then
outputRank = rank
outputName = name
outputCount = count
break
end
end
end
if frame.args[2] == "rank" then
return outputRank
elseif frame.args[2] == "count" then
return outputCount
else
return outputRank .. " " .. outputName .. " " .. outputCount
end
end
return {
main = main,
}