Difference between revisions of "Module:STikiLeaderboard"

From blackwiki
Jump to navigation Jump to search
blackwiki>Favonian
m (Reverted edits by 95.191.14.248 (talk) to last version by Mr. Stradivarius)
Line 17: Line 17:
 
)
 
)
 
return r[dfield]
 
return r[dfield]
 
+
end
  
 
-- Expose the data values to wikitext
 
-- Expose the data values to wikitext
end
+
return setmetatable({}, {
 
 
 
__index = function (t, key)
 
__index = function (t, key)
 
return function (frame)
 
return function (frame)
Line 27: Line 26:
 
username = mw.getContentLanguage():ucfirst(mw.text.trim(username))
 
username = mw.getContentLanguage():ucfirst(mw.text.trim(username))
 
if username == '' then
 
if username == '' then
error('HAGGER?')
+
error('No username specified')
 
end
 
end
 
return findLeaderboardData(key, username)
 
return findLeaderboardData(key, username)
 
end
 
end
 
end
 
end
 +
})

Revision as of 21:50, 24 January 2019

This module displays statistics about a given editor's use of the STiki anti-vandalism tool. It reads the information from Wikipedia:STiki/leaderboard.

Usage

{{#invoke:STikiLeaderboard|<!-- code -->|<!--username-->}}
Leaderboard data field Code
Rank rank
Uses uses
Percentage of edits tagged as vandalism vand
Percentage of edits reverted while assuming good faith agf
Favourite queue queue
First use first
Last use last
Average daily edits avg
Uses yesterday yest
Uses in the last 30 days last30

Examples

Input Output
{{#invoke:STikiLeaderboard|rank|West.andrew.g}} Lua error at line 3: Could not find the leaderboard text.
{{#invoke:STikiLeaderboard|uses|West.andrew.g}} Lua error at line 3: Could not find the leaderboard text.
{{#invoke:STikiLeaderboard|queue|Fraggle81}} Lua error at line 3: Could not find the leaderboard text.
{{#invoke:STikiLeaderboard|first|Widr}} Lua error at line 3: Could not find the leaderboard text.

-- Get the raw leaderboard content.
local lb = mw.title.new('Wikipedia:STiki/leaderboard')
local lbtext = (lb and lb:getContent()) or error('Could not find the leaderboard text')

-- Get a specific data value for a given username.
local function findLeaderboardData(dfield, username)
	username = username:gsub('%p', '%%%0')
	local r = {}
	r.rank, r.uses, r.vand, r.agf, r.queue, r.first, r.last, r.avg, r.yest, r.last30 = string.match(
		lbtext,
		'\n| align=center | (%d+) || align=left | %[%[User:' .. username .. '|' .. username ..
		'%]%] %(%[%[User_Talk:' .. username .. '|talk%]%] | %[%[Special:Contributions/' ..
		username .. '|contribs%]%]%) || align=right | (%d+) || align=right | ([%d%.]+)%% ' ..
		'|| align=right | ([%d%.]+)%% || align=center | (%S+) || align=right ' ..
		'| {{ntsh|%d+}} (%d+) days ago || align=right | {{ntsh|%d+}} (%d+) days ago || align=right ' ..
		'| {{ntsh|[%d%.]+}} ([%d%.]+) edits || align=right | (%d+) || align=right | (%d+)'
	)
	return r[dfield]
end

-- Expose the data values to wikitext
return setmetatable({}, {
	__index = function (t, key)
		return function (frame)
			local username = frame.args[1] or ''
			username = mw.getContentLanguage():ucfirst(mw.text.trim(username))
			if username == '' then
				error('No username specified')
			end
			return findLeaderboardData(key, username)
		end
	end
})