Модуль:Песочница/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 %"
else
percent = mw.ustring.format("%.2f %%", 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