Module:Sandbox/CX Zoom/TestPage3

From WikiProjectMed
Jump to navigation Jump to search

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,
	}