Изменения
Перейти к навигации
Перейти к поиску
Строка 53:
Строка 53:
− +
+
+
+
+
+
+
+
+
+
+
− +
− +
− +
Строка 66:
Строка 76:
− +
− +
− content = content .. '|' .. nowiki(v) .. endl+
+
+
+
+
+
+
+
+
+
название шаблона тоже может содержать знак "="; возможность указывать _именованные_ параметры с {{=}}, чтобы сохранить их порядок
local content = nowiki(prefix) .. '{{' --для накопления содержимого тэга
local content = nowiki(prefix) .. '{{' --для накопления содержимого тэга
local tname = args._template or args[1]
local tname = args._template or args[1]
if tname == '' or tname == nil then
if tname == nil then --если имя шаблона содержит знак "=" (работает, только если нет неименованных параметров)
local nextfunc, static, cur = pairs(args)
local k, v = nextfunc(static, cur)
if k ~= nil then
if not k:find('^_') then --именованные параметры, исключая модификаторы внешнего вида
tname = k .. "=" .. v
args[k] = nil --больше этот параметр нам не пригодится
end
end
end
if tname == '' or tname == nil then --при опущенном первом параметре берём имя шаблона из названия страницы
tname = mw.language.new('ru'):lcfirst(mw.title.getCurrentTitle().rootText)
tname = mw.language.new('ru'):lcfirst(mw.title.getCurrentTitle().rootText)
end
end
if args._template == nil then --имя вызываемого шаблона в неименованном первом параметре, больше его обрабатывать не надо
if args._template == nil then --имя вызываемого шаблона в неименованном первом параметре (или же взято из названия страницы или
table.remove(args,1)
table.remove(args,1) --из именованного параметра в отсутствие неименованных - в этой строчке вреда нет в любом случае),
end
end --больше его обрабатывать не надо
if link then
if link then
content = content .. '[[Шаблон:' .. tname .. '|' .. tname .. ']]'
content = content .. '[[Шаблон:' .. tname .. '|' .. tname .. ']]'
end
end
content = content .. endl
content = content .. endl
local targs = {}
local targs, param, value, left_shift = {}, '', '', 0
for k, v in pairs(args) do
for k, v in pairs(args) do
if type(k) == 'number' then --неименованные параметры
if type(k) == 'number' then --неименованные параметры
targs[k] = v
equals_pos = v:find('=')
if equals_pos then
param = v:sub(1, equals_pos-1)
value = v:sub(equals_pos+1)
targs[param] = value
content = content .. '|' .. nowiki(param) .. '=' .. nowiki(value) .. endl
left_shift = left_shift+1 --переменная нужна, чтобы квазинумерованные параметры, переданные
else --через "{{=}}", не сбивали порядок
targs[k - left_shift] = v
content = content .. '|' .. nowiki(v) .. endl
end
elseif not k:find('^_') then --именованные параметры, исключая модификаторы внешнего вида
elseif not k:find('^_') then --именованные параметры, исключая модификаторы внешнего вида
targs[k] = v
targs[k] = v