<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.dzmuh.com/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ATemplateDataDoc</id>
	<title>Модуль:TemplateDataDoc - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dzmuh.com/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ATemplateDataDoc"/>
	<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TemplateDataDoc&amp;action=history"/>
	<updated>2026-05-05T23:59:01Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TemplateDataDoc&amp;diff=13066&amp;oldid=prev</id>
		<title>Dzmuh в 23:55, 10 июня 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TemplateDataDoc&amp;diff=13066&amp;oldid=prev"/>
		<updated>2023-06-10T23:55:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 23:55, 10 июня 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l47&quot;&gt;Строка 47:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 47:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;function p.getTemplateData( pageName )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;function p.getTemplateData( pageName )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local title = mw.title.makeTitle( 0, pageName );&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local title = mw.title.makeTitle( 0, pageName );&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if not title or not title.exists &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;or not &lt;/del&gt;title:getContent() then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if not title or not title.exists &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;then&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		return false&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	end&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	local content = &lt;/ins&gt;title:getContent()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	if not content &lt;/ins&gt;then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		return false;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		return false;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	end;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	end;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local json = mw.ustring.match( &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;title:getContent()&lt;/del&gt;, '&amp;lt;[Tt]emplate[Dd]ata%s*&amp;gt;(.*)&amp;lt;/[Tt]emplate[Dd]ata%s*&amp;gt;' );&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	local json = mw.ustring.match( &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;content&lt;/ins&gt;, '&amp;lt;[Tt]emplate[Dd]ata%s*&amp;gt;(.*)&amp;lt;/[Tt]emplate[Dd]ata%s*&amp;gt;' );&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if not json then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if not json then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		return nil;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		return nil;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_ru:diff::1.12:old-11112:rev-13066 --&gt;
&lt;/table&gt;</summary>
		<author><name>Dzmuh</name></author>
	</entry>
	<entry>
		<id>https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TemplateDataDoc&amp;diff=11112&amp;oldid=prev</id>
		<title>Dzmuh: Новая страница: «local docSubPage = mw.message.new( 'Templatedata-doc-subpage' ):plain();  local p = {};  local lastNumber = 0;  -- Enable/disable additional spacing for block-formatted templates local formatBlockSpaces = true;  local noDocNote = 'TemplateDataDoc: Запишите страницу для отображения заполненного шаблона.';  function p.processJson( json ) 	local status, data = pcall( mw.text.jsonDecode, json ); 	if status == fals...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TemplateDataDoc&amp;diff=11112&amp;oldid=prev"/>
		<updated>2023-01-22T22:16:51Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «local docSubPage = mw.message.new( &amp;#039;Templatedata-doc-subpage&amp;#039; ):plain();  local p = {};  local lastNumber = 0;  -- Enable/disable additional spacing for block-formatted templates local formatBlockSpaces = true;  local noDocNote = &amp;#039;TemplateDataDoc: Запишите страницу для отображения заполненного шаблона.&amp;#039;;  function p.processJson( json ) 	local status, data = pcall( mw.text.jsonDecode, json ); 	if status == fals...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local docSubPage = mw.message.new( 'Templatedata-doc-subpage' ):plain();&lt;br /&gt;
&lt;br /&gt;
local p = {};&lt;br /&gt;
&lt;br /&gt;
local lastNumber = 0;&lt;br /&gt;
&lt;br /&gt;
-- Enable/disable additional spacing for block-formatted templates&lt;br /&gt;
local formatBlockSpaces = true;&lt;br /&gt;
&lt;br /&gt;
local noDocNote = 'TemplateDataDoc: Запишите страницу для отображения заполненного шаблона.';&lt;br /&gt;
&lt;br /&gt;
function p.processJson( json )&lt;br /&gt;
	local status, data = pcall( mw.text.jsonDecode, json );&lt;br /&gt;
	if status == false then&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not data[ 'paramOrder' ] then&lt;br /&gt;
		data[ 'paramOrder' ] = {};&lt;br /&gt;
		for paramName, paramData in pairs( data[ 'params' ] ) do&lt;br /&gt;
			table.insert( data[ 'paramOrder' ], paramName );&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local deprecatedParams = {&lt;br /&gt;
		'nocat',&lt;br /&gt;
		'from',&lt;br /&gt;
		'nocoord',&lt;br /&gt;
		'nocatcoord',&lt;br /&gt;
		'Автооформление заголовка',&lt;br /&gt;
		'Ширина',&lt;br /&gt;
		'ширина',&lt;br /&gt;
		'Ширина изображения',&lt;br /&gt;
		'ширина изображения',&lt;br /&gt;
		'Ширина логотипа',&lt;br /&gt;
		'ширина логотипа',&lt;br /&gt;
	};&lt;br /&gt;
	for _, param in ipairs( deprecatedParams ) do&lt;br /&gt;
		if data[ 'params' ][ param ] ~= nil then&lt;br /&gt;
			data[ 'params' ][ param ][ 'deprecated' ] = '-';&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return data;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTemplateData( pageName )&lt;br /&gt;
	local title = mw.title.makeTitle( 0, pageName );&lt;br /&gt;
	if not title or not title.exists or not title:getContent() then&lt;br /&gt;
		return false;&lt;br /&gt;
	end;&lt;br /&gt;
&lt;br /&gt;
	local json = mw.ustring.match( title:getContent(), '&amp;lt;[Tt]emplate[Dd]ata%s*&amp;gt;(.*)&amp;lt;/[Tt]emplate[Dd]ata%s*&amp;gt;' );&lt;br /&gt;
	if not json then&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.processJson( json )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getValue( data, key )&lt;br /&gt;
	if data[ key ] then&lt;br /&gt;
		return data[ key ];&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Numbered keys return as numbers&lt;br /&gt;
	local nkey = tonumber( key );&lt;br /&gt;
	if nkey ~= nil and data[ nkey ] then&lt;br /&gt;
		return data[ nkey ];&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return {};&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- See https://phabricator.wikimedia.org/diffusion/ETDA/browse/master/Specification.md?as=remarkup&lt;br /&gt;
-- We need a global format value for the 'block' and 'inline': [[phab:T205438]]&lt;br /&gt;
function p.convertFormatString( rawTemplateFormat )&lt;br /&gt;
	local templateFormat = rawTemplateFormat or 'inline';&lt;br /&gt;
	local isBlockFormatted = false;&lt;br /&gt;
	if templateFormat == 'block' then&lt;br /&gt;
		templateFormat = '{{_\n| _ = _\n}}';&lt;br /&gt;
		isBlockFormatted = true;&lt;br /&gt;
	elseif templateFormat == 'inline' then&lt;br /&gt;
		templateFormat = '{{_|_=_}}';&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return templateFormat, isBlockFormatted;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getFormatParts( rawTemplateFormat, templateName )&lt;br /&gt;
	local templateFormat, isBlockFormatted = p.convertFormatString( rawTemplateFormat );&lt;br /&gt;
	local nameFormat = mw.ustring.match( templateFormat, '^[^|]+' );&lt;br /&gt;
	local paramKeyFormat = mw.ustring.match( templateFormat, '%|[^=]+=' );&lt;br /&gt;
	local paramValueFormat = mw.ustring.match( templateFormat, '=[^}]+' );&lt;br /&gt;
	paramValueFormat = mw.ustring.sub( paramValueFormat, 2 );&lt;br /&gt;
	local endFormat = mw.ustring.match( templateFormat, '%}%}.*$' );&lt;br /&gt;
	local startFormat = mw.ustring.gsub( nameFormat, '_', templateName );&lt;br /&gt;
&lt;br /&gt;
	return isBlockFormatted, startFormat, endFormat, paramKeyFormat, paramValueFormat;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatKeyValue( key, parameterData, formatData )&lt;br /&gt;
	if parameterData[ 'deprecated' ] then&lt;br /&gt;
		return '';&lt;br /&gt;
	end&lt;br /&gt;
	local args = formatData.args;&lt;br /&gt;
	local parameterName = key;&lt;br /&gt;
	local nkey = tonumber( key );&lt;br /&gt;
	&lt;br /&gt;
	-- Add additional spacing to string keys&lt;br /&gt;
	if formatData.parameterLength and ( nkey == nil or lastNumber ~= nkey - 1 ) then&lt;br /&gt;
		while mw.ustring.len( key ) &amp;lt; formatData.parameterLength do&lt;br /&gt;
			key = key .. ' ';&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Remove numbering for adjacent numbered keys&lt;br /&gt;
	if nkey ~= nil and lastNumber == nkey - 1 then&lt;br /&gt;
		key = '';&lt;br /&gt;
		lastNumber = nkey;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local value = '';&lt;br /&gt;
	if formatData.valueKey == 'example' and parameterData[ 'example' ] then&lt;br /&gt;
		-- Example&lt;br /&gt;
		value = parameterData[ 'example' ];&lt;br /&gt;
	else&lt;br /&gt;
		if formatData.valueKey == 'description' and parameterData[ 'description' ] then&lt;br /&gt;
			-- Description&lt;br /&gt;
			value = parameterData[ 'description' ];&lt;br /&gt;
			if value ~= '' then&lt;br /&gt;
				value = '&amp;amp;lt;!-- ' .. value .. ' --&amp;amp;gt;';&lt;br /&gt;
			end&lt;br /&gt;
		elseif parameterData[ 'autovalue' ] then&lt;br /&gt;
			-- Autovalue&lt;br /&gt;
			value = parameterData[ 'autovalue' ];&lt;br /&gt;
		end&lt;br /&gt;
		if args[ '$' .. parameterName ] and args[ '$' .. parameterName ] ~= '' then&lt;br /&gt;
			-- Custom values from template call&lt;br /&gt;
			value = args[ '$' .. parameterName ];&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local formattedKey = mw.ustring.gsub( formatData.paramKeyFormat, '_+', key, 1 );&lt;br /&gt;
	if key == '' then&lt;br /&gt;
		formattedKey = mw.ustring.gsub( formattedKey, '=', '' );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return formattedKey .. mw.ustring.gsub( formatData.paramValueFormat, '_', value, 1 );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.generateBlankCode( templateData, templateName, args )&lt;br /&gt;
	if templateData == false then&lt;br /&gt;
		return '{{' .. templateName .. '}}';&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local parameterLength = 0;&lt;br /&gt;
	for i, parameterName in ipairs( templateData[ 'paramOrder' ] ) do&lt;br /&gt;
		local parameterData = p.getValue( templateData[ 'params' ], parameterName );&lt;br /&gt;
		if not parameterData[ 'deprecated' ] then&lt;br /&gt;
			local length = mw.ustring.len( parameterName );&lt;br /&gt;
			if length &amp;gt; parameterLength then&lt;br /&gt;
				parameterLength = length;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local isBlockFormatted, startFormat, endFormat, paramKeyFormat, paramValueFormat = p.getFormatParts( templateData[ 'format' ], templateName );&lt;br /&gt;
	local out = startFormat;&lt;br /&gt;
&lt;br /&gt;
	lastNumber = 0;&lt;br /&gt;
	for i, parameterName in ipairs( templateData[ 'paramOrder' ] ) do&lt;br /&gt;
		local parameterData = p.getValue( templateData[ 'params' ], parameterName );&lt;br /&gt;
		if parameterData[ 'inherits' ] then&lt;br /&gt;
			parameterData = p.getValue( templateData[ 'params' ], parameterData[ 'inherits' ] );&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		out = out .. p.formatKeyValue( parameterName, parameterData, {&lt;br /&gt;
			args = args,&lt;br /&gt;
			valueKey = ( args[ 'description' ] and 'description' or nil ),&lt;br /&gt;
			isBlockFormatted = isBlockFormatted,&lt;br /&gt;
			parameterLength = parameterLength,&lt;br /&gt;
			paramKeyFormat = paramKeyFormat,&lt;br /&gt;
			paramValueFormat = paramValueFormat,&lt;br /&gt;
		} );&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return out .. endFormat;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.generateBlank( frame )&lt;br /&gt;
	local frame = mw.getCurrentFrame();&lt;br /&gt;
	local getArgs = require( 'Module:Arguments' ).getArgs;&lt;br /&gt;
	local args = getArgs( frame );&lt;br /&gt;
	local templateName = frame.args[ 1 ];&lt;br /&gt;
	table.remove( args, 1 );&lt;br /&gt;
	&lt;br /&gt;
	local docPage = 'Template:' .. templateName .. '/' .. docSubPage;&lt;br /&gt;
	local templateData = p.getTemplateData( docPage );&lt;br /&gt;
	local out = p.generateBlankCode( templateData, templateName, args );&lt;br /&gt;
&lt;br /&gt;
	local previewNote = ''&lt;br /&gt;
	if templateData == false and frame:preprocess('{{REVISIONID}}') == '' then&lt;br /&gt;
		previewNote = '&amp;lt;div class=&amp;quot;warningbox&amp;quot;&amp;gt;' .. noDocNote .. '&amp;lt;/div&amp;gt;';&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return previewNote .. frame:extensionTag{ name = 'pre', content = out };&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.generateExampleCode( templateData, templateName, args )&lt;br /&gt;
	if templateData == false then&lt;br /&gt;
		return '{{' .. templateName .. '}}';&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local parameterLength = 0;&lt;br /&gt;
	for i, parameterName in ipairs( templateData[ 'paramOrder' ] ) do&lt;br /&gt;
		local parameterData = p.getValue( templateData[ 'params' ], parameterName );&lt;br /&gt;
		if parameterData[ 'example' ] and not parameterData[ 'deprecated' ] then&lt;br /&gt;
			local length = mw.ustring.len( parameterName );&lt;br /&gt;
			if length &amp;gt; parameterLength then&lt;br /&gt;
				parameterLength = length;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local isBlockFormatted, startFormat, endFormat, paramKeyFormat, paramValueFormat = p.getFormatParts( templateData[ 'format' ], templateName );&lt;br /&gt;
	local out = startFormat;&lt;br /&gt;
&lt;br /&gt;
	lastNumber = 0;&lt;br /&gt;
	for i, parameterName in ipairs( templateData[ 'paramOrder' ] ) do&lt;br /&gt;
		local parameterData = p.getValue( templateData[ 'params' ], parameterName );&lt;br /&gt;
		if parameterData[ 'inherits' ] then&lt;br /&gt;
			parameterData = p.getValue( templateData[ 'params' ], parameterData[ 'inherits' ] );&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if parameterData[ 'example' ] then&lt;br /&gt;
			out = out .. p.formatKeyValue( parameterName, parameterData, {&lt;br /&gt;
				args = args,&lt;br /&gt;
				valueKey = 'example',&lt;br /&gt;
				isBlockFormatted = isBlockFormatted,&lt;br /&gt;
				parameterLength = parameterLength,&lt;br /&gt;
				paramKeyFormat = paramKeyFormat,&lt;br /&gt;
				paramValueFormat = paramValueFormat,&lt;br /&gt;
			} );&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return out .. endFormat;&lt;br /&gt;
end	&lt;br /&gt;
&lt;br /&gt;
function p.generateExample( frame )&lt;br /&gt;
	local frame = mw.getCurrentFrame();&lt;br /&gt;
	local args = frame.args;&lt;br /&gt;
	local templateName = frame.args[ 1 ];&lt;br /&gt;
	local docPage = 'Template:' .. templateName .. '/' .. docSubPage;&lt;br /&gt;
	local templateData = p.getTemplateData( docPage );&lt;br /&gt;
	local out = p.generateExampleCode( templateData, templateName, args );&lt;br /&gt;
	&lt;br /&gt;
	local previewNote = ''&lt;br /&gt;
	if templateData == false and frame:preprocess('{{REVISIONID}}') == '' then&lt;br /&gt;
		previewNote = '&amp;lt;div class=&amp;quot;warningbox&amp;quot;&amp;gt;' .. noDocNote .. '&amp;lt;/div&amp;gt;';&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return previewNote .. frame:preprocess( out ) .. frame:extensionTag{ name = 'pre', content = out };&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p;&lt;/div&gt;</summary>
		<author><name>Dzmuh</name></author>
	</entry>
</feed>