Модуль:Песочница/Pz-90.11

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Документация
 ---- Этот модуль подсчитывает голоса в секциях голосования, копипаста из [[Модуль:Votes]]
local votes = {}

function votes.count(frame)
    local args = frame.args;
    local arb = mw.ustring.gsub(args[1] or '', '_', ' ');
    local user = mw.ustring.gsub(args[2] or '', '_', ' ');
    local pagepointer_sup;
    local pagepointer_opp;
    local pattern = "\n#[^#*:][^\n]+"; -- подсчёт нумерованных списков
    pagepointer_sup=mw.title.new('Википедия:Выборы арбитров/' .. arb .. '/Голосование/+/' .. user, '')
    pagepointer_opp=mw.title.new('Википедия:Выборы арбитров/' .. arb .. '/Голосование/-/' .. user, '')
    local text_sup=pagepointer_sup.getContent(pagepointer_sup);
    local text_opp=pagepointer_opp.getContent(pagepointer_opp);
	local count_opp = 0;
	local count_sup = 0;
    if text_sup ~= nil then
	    text_sup= mw.ustring.gsub( text_sup, "<!%-%-.-%-%->", "" ); -- убираем HTML комментарии
        text_sup, count_sup = mw.ustring.gsub(text_sup, pattern, ""); -- количество голосов
	end
	if text_opp ~= nil then
	    text_opp= mw.ustring.gsub( text_opp, "<!%-%-.-%-%->", "" ); -- убираем HTML комментарии
        text_opp, count_opp = mw.ustring.gsub(text_opp, pattern, ""); -- количество голосов
	end
    local percent;
    local count_total = count_sup + count_opp;
    if count_total == 0 then
        percent = "0&nbsp;%"
    else
        percent = mw.ustring.format("%.2f&nbsp;%%", count_sup * 100 / (count_sup + count_opp))
    end
    local style = 'background: #ffdddd;';
    if count_sup * 100 / (count_sup + count_opp) > 66.6 then
    	style = 'background:#ddffdd;'
    end
	return '\n<tr style="' .. style .. '">' ..
		  "<td>[[#" .. user .. '|' .. user .. "]]</td>" ..
	      "<td>" .. count_sup .. " </td>" ..
	      "<td>" .. count_opp .. " </td>" ..
	      "<td>" .. count_opp + count_sup .. " </td>" ..
	      "<td>" .. percent .. " </td>" ..
	      "</tr>";
end

return votes