<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://station14.ru/history/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Votes?feed=atom</id>
	<title>Модуль:Votes - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://station14.ru/history/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Votes?feed=atom"/>
	<link rel="alternate" type="text/html" href="https://station14.ru/history/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Votes"/>
	<updated>2026-06-05T16:57:09Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://station14.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Votes&amp;diff=113886&amp;oldid=prev</id>
		<title>Pok: Новая страница: «-- source: https://ru.wikipedia.org/wiki/Модуль:Votes -- license: CC BY-SA 4.0   ---- Этот модуль подсчитывает голоса в секциях голосования local votes = {}  function votes.count(frame)     local new_args = votes._getParameters( frame.args, { &#039;page&#039;, &#039;level&#039;, &#039;support&#039;, &#039;oppose&#039;, &#039;neutral&#039;, &#039;namespace&#039;, &#039;format&#039;, &#039;template&#039;, &#039;unordered&#039; } );     local page = mw.ustring.gsub(new_args[&#039;page&#039;] or &#039;&#039;, &#039;_&#039;, &#039; &#039;...»</title>
		<link rel="alternate" type="text/html" href="https://station14.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Votes&amp;diff=113886&amp;oldid=prev"/>
		<updated>2025-11-11T10:42:24Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «-- source: https://ru.wikipedia.org/wiki/Модуль:Votes -- license: CC BY-SA 4.0   ---- Этот модуль подсчитывает голоса в секциях голосования local votes = {}  function votes.count(frame)     local new_args = votes._getParameters( frame.args, { &amp;#039;page&amp;#039;, &amp;#039;level&amp;#039;, &amp;#039;support&amp;#039;, &amp;#039;oppose&amp;#039;, &amp;#039;neutral&amp;#039;, &amp;#039;namespace&amp;#039;, &amp;#039;format&amp;#039;, &amp;#039;template&amp;#039;, &amp;#039;unordered&amp;#039; } );     local page = mw.ustring.gsub(new_args[&amp;#039;page&amp;#039;] or &amp;#039;&amp;#039;, &amp;#039;_&amp;#039;, &amp;#039; &amp;#039;...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- source: https://ru.wikipedia.org/wiki/Модуль:Votes&lt;br /&gt;
-- license: CC BY-SA 4.0&lt;br /&gt;
&lt;br /&gt;
 ---- Этот модуль подсчитывает голоса в секциях голосования&lt;br /&gt;
local votes = {}&lt;br /&gt;
&lt;br /&gt;
function votes.count(frame)&lt;br /&gt;
    local new_args = votes._getParameters( frame.args, { &amp;#039;page&amp;#039;, &amp;#039;level&amp;#039;, &amp;#039;support&amp;#039;, &amp;#039;oppose&amp;#039;, &amp;#039;neutral&amp;#039;, &amp;#039;namespace&amp;#039;, &amp;#039;format&amp;#039;, &amp;#039;template&amp;#039;, &amp;#039;unordered&amp;#039; } );&lt;br /&gt;
    local page = mw.ustring.gsub(new_args[&amp;#039;page&amp;#039;] or &amp;#039;&amp;#039;, &amp;#039;_&amp;#039;, &amp;#039; &amp;#039;);&lt;br /&gt;
    local namespace = new_args[&amp;#039;namespace&amp;#039;] or &amp;#039;&amp;#039;;&lt;br /&gt;
    local level = new_args[&amp;#039;level&amp;#039;] or 3;&lt;br /&gt;
    local fmt =  new_args[&amp;#039;format&amp;#039;] or &amp;#039;row&amp;#039;;&lt;br /&gt;
    local template = new_args[&amp;#039;template&amp;#039;] or &amp;#039;&amp;#039;;&lt;br /&gt;
    local unordered = new_args[&amp;#039;unordered&amp;#039;] or false;&lt;br /&gt;
    local sections = {&lt;br /&gt;
        support = { name = new_args[&amp;#039;support&amp;#039;] or &amp;#039;За&amp;#039;, count = 0},&lt;br /&gt;
        oppose  = { name = new_args[&amp;#039;oppose&amp;#039;]  or &amp;#039;Против&amp;#039;, count = 0},&lt;br /&gt;
        neutral = { name = new_args[&amp;#039;neutral&amp;#039;] or &amp;#039;Воздержались&amp;#039;, count = 0}&lt;br /&gt;
    }&lt;br /&gt;
    local pagepointer;&lt;br /&gt;
    local pattern = &amp;quot;\n#[^#*:][^\n]+&amp;quot;; -- подсчёт нумерованных списков&lt;br /&gt;
    if page == &amp;#039;&amp;#039; then&lt;br /&gt;
        pagepointer=mw.title.getCurrentTitle()&lt;br /&gt;
        assert(pagepointer,&amp;quot;failed to access getCurrentTitle&amp;quot;)&lt;br /&gt;
    else&lt;br /&gt;
        pagepointer=mw.title.new(page, namespace)&lt;br /&gt;
        assert(pagepointer,&amp;quot;failed to access mw.title.new(&amp;quot;..tostring(page)..&amp;quot;)&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    if type( unordered ) == &amp;#039;string&amp;#039; and unordered ~= &amp;#039;false&amp;#039; and unordered ~= &amp;#039;no&amp;#039; and unordered ~= &amp;#039;0&amp;#039; then&lt;br /&gt;
    	pattern = &amp;quot;\n%*[^#*:][^\n]+&amp;quot;; -- подсчёт ненумерованных списков&lt;br /&gt;
    end &lt;br /&gt;
    local text=pagepointer.getContent(pagepointer);&lt;br /&gt;
    if text ~= nil then&lt;br /&gt;
	    text= mw.ustring.gsub( text, &amp;quot;&amp;lt;!%-%-.-%-%-&amp;gt;&amp;quot;, &amp;quot;&amp;quot; ); -- убираем HTML комментарии&lt;br /&gt;
	    local hpref = mw.ustring.rep(&amp;quot;=&amp;quot;, tonumber(level));&lt;br /&gt;
	    for k, v in pairs(sections) do &lt;br /&gt;
	    	local name = mw.ustring.gsub( v.name, &amp;quot;([%(%)%.%%%+%-%*%?%[%^%$%]])&amp;quot;, &amp;quot;%%%1&amp;quot; );&lt;br /&gt;
	        local t = mw.ustring.match(text, &amp;quot;\n&amp;quot; .. hpref .. &amp;quot;[^=]-&amp;quot; .. name .. &amp;quot;[^=]-&amp;quot; .. hpref ..&amp;quot;(\n.-)\n=&amp;quot;);&lt;br /&gt;
	        if t ~= nil then&lt;br /&gt;
	            t, v.count = mw.ustring.gsub(t, pattern, &amp;quot;&amp;quot;); -- количество голосов&lt;br /&gt;
	        end&lt;br /&gt;
	    end&lt;br /&gt;
	end&lt;br /&gt;
    local percent;&lt;br /&gt;
    if sections.support.count == 0 then&lt;br /&gt;
        percent = &amp;quot;0&amp;amp;nbsp;%&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        percent = mw.ustring.format(&amp;quot;%.2f&amp;amp;nbsp;%%&amp;quot;, sections.support.count * 100 / (sections.support.count + sections.oppose.count))&lt;br /&gt;
    end&lt;br /&gt;
    if template ~= &amp;#039;&amp;#039; then&lt;br /&gt;
    	local targs = {};&lt;br /&gt;
    	local pframe = frame:getParent();&lt;br /&gt;
    	if pframe ~= nil then&lt;br /&gt;
    		for key, value in pairs(pframe.args) do&lt;br /&gt;
    			targs[key] =  value;&lt;br /&gt;
    		end&lt;br /&gt;
    	end&lt;br /&gt;
    	targs[&amp;#039;за&amp;#039;] = tostring(sections.support.count);&lt;br /&gt;
    	targs[&amp;#039;против&amp;#039;] = tostring(sections.oppose.count);&lt;br /&gt;
    	targs[&amp;#039;воздержались&amp;#039;] = tostring(sections.neutral.count);&lt;br /&gt;
    	targs[&amp;#039;page&amp;#039;] = page;&lt;br /&gt;
    	return frame:expandTemplate{ title = template, args = targs }&lt;br /&gt;
    end	&lt;br /&gt;
    if fmt == &amp;#039;mini&amp;#039; then&lt;br /&gt;
		return sections.support.count .. &amp;#039;/&amp;#039; .. sections.oppose.count .. &amp;#039;/&amp;#039; .. sections.neutral.count .. &amp;#039;&amp;amp;nbsp;—&amp;amp;nbsp;&amp;#039; .. percent;&lt;br /&gt;
    else&lt;br /&gt;
		return &amp;quot;\n&amp;lt;tr&amp;gt;&amp;quot; ..&lt;br /&gt;
	      &amp;quot;&amp;lt;td class=\&amp;quot;criteriaCheck-supportVotesCount\&amp;quot;&amp;gt;&amp;quot; .. sections.support.count .. &amp;quot; &amp;lt;/td&amp;gt;&amp;quot; ..&lt;br /&gt;
	      &amp;quot;&amp;lt;td class=\&amp;quot;criteriaCheck-opposeVotesCount\&amp;quot;&amp;gt;&amp;quot; .. sections.oppose.count .. &amp;quot; &amp;lt;/td&amp;gt;&amp;quot; ..&lt;br /&gt;
	      &amp;quot;&amp;lt;td class=\&amp;quot;criteriaCheck-neutralVotesCount\&amp;quot;&amp;gt;&amp;quot; .. sections.neutral.count .. &amp;quot; &amp;lt;/td&amp;gt;&amp;quot; ..&lt;br /&gt;
	      &amp;quot;&amp;lt;td class=\&amp;quot;criteriaCheck-supportPercent\&amp;quot;&amp;gt;&amp;quot; .. percent .. &amp;quot; &amp;lt;/td&amp;gt;&amp;quot; ..&lt;br /&gt;
	     &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Таблица параметров&lt;br /&gt;
function votes._getParameters( frame_args, arg_list )&lt;br /&gt;
    local new_args = {};&lt;br /&gt;
    local index = 1;&lt;br /&gt;
    local value;&lt;br /&gt;
 &lt;br /&gt;
    for i,arg in ipairs( arg_list ) do&lt;br /&gt;
        value = frame_args[arg]&lt;br /&gt;
        if value == nil then&lt;br /&gt;
            value = frame_args[index];&lt;br /&gt;
            index = index + 1;&lt;br /&gt;
        end&lt;br /&gt;
        new_args[arg] = value;&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    return new_args;&lt;br /&gt;
end  &lt;br /&gt;
&lt;br /&gt;
return votes&lt;/div&gt;</summary>
		<author><name>Pok</name></author>
	</entry>
</feed>