Модуль:Песочница/Jack who built the house/CSS for Gadget-markadmins.js

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Документация
p = {}

function p.main(frame)
	local args
	if frame then
		args = frame.args
	end
	local font = args and args[1] or 'monospace'
	
	local content = mw.title.new('MediaWiki:Gadget-markadmins.js'):getContent()
	local userLists = mw.ustring.match(content, 'var userSet = {.-}')
	
	local users = {}
	local iterator = mw.ustring.gmatch(userLists, '\'(%w+)\'.-%[(.-)%][,\n]')
	for flag, list in iterator do
		local iterator2 = mw.ustring.gmatch(list, '\'(.-[^\\])\'')
		for v2 in iterator2 do
			if users[v2] then
				table.insert(users[v2].flags, flag)
			else
				users[v2] = {flags = {flag}}
			end
		end
	end
	
	for k, v in pairs(users) do
		v.flagsString = ' ('
		for k2, v2 in pairs(v.flags) do
			v.flagsString = v.flagsString .. v2 .. (k2 == #v.flags and '' or ',')
		end
		v.flagsString = v.flagsString .. ')'
	end
	
	local flagStrings = {}
	for k, v in pairs(users) do
		if flagStrings[v.flagsString] then
			table.insert(flagStrings[v.flagsString], k)
		else
			flagStrings[v.flagsString] = {k}
		end
	end
	
	local rules = ''
	for k, v in pairs(flagStrings) do
		
		for k2, v2 in pairs(v) do
			rules = rules .. '.mw-userlink[title$=":' .. v2 .. '"]:after' .. (k2 == #v and v2 ~= 'Мастер теней' and '' or ',')
			if v2 == 'Мастер теней' then
				rules = rules .. 'a[title="Обсуждение участника:' .. v2 .. '"]:after' .. (k2 == #v and '' or ',')
			end
		end
		
		rules = rules .. ' {content:"' .. k .. '"; font-family:' .. font .. (font ~= 'monospace' and ', monospace' or '') .. '; margin-left:-4px; color:#0645ad; visibility:hidden;}\n'
	end
	
	return rules
end

return p