<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.maoism.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ATransclude</id>
	<title>Модуль:Transclude - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.maoism.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ATransclude"/>
	<link rel="alternate" type="text/html" href="http://wiki.maoism.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Transclude&amp;action=history"/>
	<updated>2026-05-13T15:02:50Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.maoism.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Transclude&amp;diff=1271&amp;oldid=prev</id>
		<title>Maoism archivist: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://wiki.maoism.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Transclude&amp;diff=1271&amp;oldid=prev"/>
		<updated>2020-10-15T08:07:12Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 11:07, 15 октября 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Maoism archivist</name></author>
	</entry>
	<entry>
		<id>http://wiki.maoism.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Transclude&amp;diff=1270&amp;oldid=prev</id>
		<title>wiki&gt;Serhio Magpie: Изменять order в зависимости от from .. to в методе cycle. Вывод inline или newline в методе cycle.</title>
		<link rel="alternate" type="text/html" href="http://wiki.maoism.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Transclude&amp;diff=1270&amp;oldid=prev"/>
		<updated>2020-06-21T03:19:12Z</updated>

		<summary type="html">&lt;p&gt;Изменять order в зависимости от from .. to в методе cycle. Вывод inline или newline в методе cycle.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local M={}&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
-- Функции для работы с параметрами вызвавшего шаблона --&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
function M.uni(f)-- Унификация имён параметров; псевдонимы.&lt;br /&gt;
    local tf, cs=f:getParent(), {};&lt;br /&gt;
    local findcs=function(a) cs[a]=f.args[a] end;&lt;br /&gt;
    (f.args['|фиксрег'] or f.args['|fixreg'] or ''):gmatch(' *([^%n]+) *', findcs);&lt;br /&gt;
    -- {{!}}фиксрег = список разделённых новыми строками аргументов, регистр которых не менять&lt;br /&gt;
    local args,am={};&lt;br /&gt;
    for a,v in pairs(tf.args) do&lt;br /&gt;
        am = a:lower():gsub('[_ ]+',' ');&lt;br /&gt;
        args[ cs[a] and a  or  ( f.args[am] or am ) ] = v&lt;br /&gt;
    end&lt;br /&gt;
    return tf:expandTemplate{title=f.args[1]; args=args}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.forall(frame)-- Итератор по нумерованным аргументам вызывающего шаблона.&lt;br /&gt;
	local template = frame.args[1]&lt;br /&gt;
	local separator = frame.args.separator or ''&lt;br /&gt;
	local conjunction = frame.args.conjunction or separator&lt;br /&gt;
	&lt;br /&gt;
	local results = {}&lt;br /&gt;
	for param, value in pairs(frame:getParent().args) do&lt;br /&gt;
		if type(param) == 'number' then&lt;br /&gt;
			results[param] = frame:expandTemplate{ title = template, args = {value} }&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return mw.text.listToText( results, separator, conjunction )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.escapeparams(f)-- Нормализация&lt;br /&gt;
	-- (обезопасивание) значений параметров.&lt;br /&gt;
    local i,ac,acn=0,{},{};&lt;br /&gt;
    local function repl(s)&lt;br /&gt;
        return s:gsub('{{','{{Х'):gsub('}}',&amp;quot;{{ЪЪ}}&amp;quot;):gsub('{{Х','{{ХХ}}')--: --замена фигурных скобок&lt;br /&gt;
           :gsub('=','{{=}}'):gsub('|','{{!}}') &lt;br /&gt;
    end&lt;br /&gt;
    for k,v in pairs(f:getParent().args) do&lt;br /&gt;
        if type(k)=='number' then ac[k]=repl(v); i=i+1&lt;br /&gt;
        else acn[repl(k)]=repl(v)end&lt;br /&gt;
    end&lt;br /&gt;
    if i ~= #ac-1 then --нумерованные параметры не сплошные&lt;br /&gt;
        for k,v in pairs(ac) do&lt;br /&gt;
            if k&amp;gt;i then acn[tostring(k)] = v; ac[k]=nil end-- удалять в pairs можно&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    for k,v in pairs(acn) do&lt;br /&gt;
        table.insert(ac, table.concat(f.args[2] or &amp;quot;\n &amp;quot;, k, f.args[3] or ' = ', v, f.args[4] or '') )&lt;br /&gt;
    end&lt;br /&gt;
    return table.concat(ac,'|')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.npc(f)-- Итератор по именованно-нумерованным параметрам.&lt;br /&gt;
    local tf, ac, ns = f:getParent(), {}, {};&lt;br /&gt;
    for k,v in pairs(tf.args) do&lt;br /&gt;
        local b,n = string.match(k,&amp;quot;^(.-)%s*(%d*)$&amp;quot;);&lt;br /&gt;
        n = tonumber(n);&lt;br /&gt;
        if n then&lt;br /&gt;
            if f.args[b] then&lt;br /&gt;
                if not ac[n] then&lt;br /&gt;
                    ac[n] = mw.clone(f.args)&lt;br /&gt;
                    setmetatable( ac[n], nil ) -- metatable ломает expandTemplate&lt;br /&gt;
                    table.insert(ns,n)&lt;br /&gt;
                end&lt;br /&gt;
                ac[n][b] = v&lt;br /&gt;
            end--if f.args[b]&lt;br /&gt;
        end--if n&lt;br /&gt;
    end--for&lt;br /&gt;
    table.sort(ns);&lt;br /&gt;
    local tmod = #f.args-1&lt;br /&gt;
    for n,i in ipairs(ns) do&lt;br /&gt;
        ns[n]=tf:expandTemplate{ title=f.args[n % tmod+1]; args=ac[i] }&lt;br /&gt;
    end&lt;br /&gt;
    return table.concat(ns)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.call(f)-- Просто вызывает шаблон с аргументами вызывающего.&lt;br /&gt;
    return f:getParent():expandTemplate{ title=f.args[1]; args=f:getParent().args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.join(f)-- Версия forall с разделителем вместо шаблона.&lt;br /&gt;
    -- f.args[1] — разделитель.&lt;br /&gt;
    local t, tf, i = {}, f:getParent(), tonumber(f.args.from) or 1&lt;br /&gt;
    local k,j,m = tonumber(f.args.to),i,f.args[3]&lt;br /&gt;
    while k and i&amp;lt;=k or tf.args[i] do&lt;br /&gt;
    	if (&lt;br /&gt;
    		({&lt;br /&gt;
    			['_']=function(s)return s~=''end;&lt;br /&gt;
    			['s']=function(s)return not tostring(s):match(&amp;quot;^%s*$&amp;quot;)end&lt;br /&gt;
    		})[m] or function() return true end&lt;br /&gt;
    	)(tf.args[i]) then&lt;br /&gt;
    		t[j]=tf.args[i];&lt;br /&gt;
    		j=j+1&lt;br /&gt;
    	end;&lt;br /&gt;
    	i=i+1&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.listToText(t,f.args[1],f.args[2] or f.args[1])&lt;br /&gt;
end&lt;br /&gt;
-------------------------------------------------------&lt;br /&gt;
-- Функции для работы с параметрами шаблона в invoke --&lt;br /&gt;
-------------------------------------------------------&lt;br /&gt;
--[[&lt;br /&gt;
function M.split(f)-- Разрезает строку f.args[3]&lt;br /&gt;
	-- указанным в f.args[2](?) разделителем&lt;br /&gt;
    -- и передаёт куски шаблону f.args[1].&lt;br /&gt;
    local tf, ac, oldi, i, e =f:getParent(), {}, 1, f.args[3]:find(f.args[1],1,true)&lt;br /&gt;
    -- «f.args[1]» в строке выше — точно не ошибка? --Incnis Mrsi&lt;br /&gt;
    while i do&lt;br /&gt;
        table.insert( ac,  f.args[3]:sub(oldi, i-1) ); oldi=e+1&lt;br /&gt;
    end&lt;br /&gt;
    table.insert( ac, f.args[3]:sub(oldi, #f.args[3]-1) )&lt;br /&gt;
    return f:getParent():expandTemplate{ title=f.args[1]; args=ac }&lt;br /&gt;
end&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function M.cycle(f)-- Действует аналогично forall по числовой переменной,&lt;br /&gt;
    -- изменяющейся (по умолчанию, от 1) до f.args[2].&lt;br /&gt;
    local tf,ac,op=f:getParent(), {}, f.args.output or 'inline';&lt;br /&gt;
    local sep='';&lt;br /&gt;
    if op == 'newline' then&lt;br /&gt;
    	sep='\n';&lt;br /&gt;
    end&lt;br /&gt;
    for p,k in pairs(f.args) do&lt;br /&gt;
        if type(p)=='number' then&lt;br /&gt;
            if p&amp;gt;2 then ac[p-1]=k end&lt;br /&gt;
        else ac[p]=k&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    local s,fh = f.args[2]:match('^%s*(%-?%d+)%s*%.%.') or 1,&lt;br /&gt;
        f.args[2]:match('%.%.%s*(%S.*)%s*$') or f.args[2] or '';&lt;br /&gt;
    fh=tonumber(fh) or fh:match('^%s*(.-)%s*$');&lt;br /&gt;
	s=tonumber(s);&lt;br /&gt;
    local acr={};&lt;br /&gt;
    if not s then error('Начало цикла «'..s..'» — не число') end&lt;br /&gt;
    local function dc(order)&lt;br /&gt;
        local r=tf:expandTemplate{ title=f.args[1]; args={s,unpack(ac)} }&lt;br /&gt;
        if order == 'desc' then&lt;br /&gt;
        	s=s-1;&lt;br /&gt;
        else&lt;br /&gt;
        	s=s+1;&lt;br /&gt;
    	end&lt;br /&gt;
        if r~='' then table.insert(acr,r); return r end&lt;br /&gt;
    end&lt;br /&gt;
    if type(fh)=='number' then&lt;br /&gt;
    	if fh &amp;gt; s then&lt;br /&gt;
        	while s&amp;lt;=fh do dc('asc') end&lt;br /&gt;
    	else&lt;br /&gt;
        	while s&amp;gt;=fh do dc('desc') end&lt;br /&gt;
    	end&lt;br /&gt;
    elseif fh~='' then&lt;br /&gt;
        while tf:expandTemplate{ title=fh; args={s,unpack(ac)} } do dc('asc') end&lt;br /&gt;
    else&lt;br /&gt;
        while dc('asc') do end&lt;br /&gt;
    end&lt;br /&gt;
    return table.concat(acr, sep)&lt;br /&gt;
end&lt;br /&gt;
--[[Функция не пашет как можно ждать — пробелы отсекаются после передачи параметров в expandTemplate&lt;br /&gt;
function M.pass(f)-- Передаёт шаблону параметры без подрезки.&lt;br /&gt;
    local ac,i={},1;&lt;br /&gt;
    while f.args[2*i] do ac[ tonumber(f.args[2*i]) or f.args[2*i] ] = f.args[2*i+1]; i=i+1 end;&lt;br /&gt;
    return  f:getParent():expandTemplate{ title=f.args[1]; args=ac }&lt;br /&gt;
end&lt;br /&gt;
]]&lt;br /&gt;
return M&lt;/div&gt;</summary>
		<author><name>wiki&gt;Serhio Magpie</name></author>
	</entry>
</feed>