Изменения

до кучи возможность вписывать <nowiki> и {{=}} через HTML-сущности, и <nowiki> при вызове будет удаляться, а {{=}} рассматриваться как =
Строка 35: Строка 35:  
str = string.gsub(str,'}','&#125;')
 
str = string.gsub(str,'}','&#125;')
 
str = string.gsub(str,'\'','&#39;')
 
str = string.gsub(str,'\'','&#39;')
 +
return str
 +
end
 +
 +
--удаляет из параметров вписанные через HTML-сущности "<nowiki>" и заменяет "{{=}}" на "=" для вызова шаблона
 +
local function process_nowiki_equals(str)
 +
str = str:gsub('&lt;nowiki>', ''):gsub('&lt;/nowiki>', '')
 +
:gsub('&lt;nowiki&gt;', ''):gsub('&lt;/nowiki&gt;', '')
 +
:gsub('&#123;&#123;&#61;&#125;&#125;', '='):gsub('&#123;{&#61;}&#125;', '=')
 +
:gsub('{&#123;&#61;&#125;}', '=')
 
return str
 
return str
 
end
 
end
Строка 83: Строка 92:  
param = v:sub(1, equals_pos-1)
 
param = v:sub(1, equals_pos-1)
 
value = v:sub(equals_pos+1)
 
value = v:sub(equals_pos+1)
targs[param] = value
+
targs[param] = process_nowiki_equals(value)
 
content = content .. '|' .. nowiki(param) .. '=' .. nowiki(value) .. endl
 
content = content .. '|' .. nowiki(param) .. '=' .. nowiki(value) .. endl
 
left_shift = left_shift+1 --переменная нужна,  чтобы квазинумерованные параметры, переданные
 
left_shift = left_shift+1 --переменная нужна,  чтобы квазинумерованные параметры, переданные
 
else                          --через "{{=}}", не сбивали порядок
 
else                          --через "{{=}}", не сбивали порядок
targs[k - left_shift] = v
+
targs[k - left_shift] = process_nowiki_equals(v)
 
content = content .. '|' .. nowiki(v) .. endl
 
content = content .. '|' .. nowiki(v) .. endl
 
end
 
end
 
elseif not k:find('^_') then --именованные параметры, исключая модификаторы внешнего вида
 
elseif not k:find('^_') then --именованные параметры, исключая модификаторы внешнего вида
targs[k] = v
+
targs[k] = process_nowiki_equals(v)
 
content = content .. '|' .. k .. '=' .. nowiki(v) .. endl
 
content = content .. '|' .. k .. '=' .. nowiki(v) .. endl
 
end
 
end
Анонимный участник