Module:Sandbox/CX Zoom/TestPage3

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,

}