Модуль:Unsubst

{{i}} Документація модуля[перегляд] [редагувати] [історія] [очистити кеш]

Модуль-помічник для полегшення перетворення підставлення шаблону на його включення.

Службові шаблони, такі як {{Fact}} або {{Недостатньо джерел}}, ніколи не повинні підставлятися. Хитрість для уникнення цього полягає у підставленні замість шаблону його включеної форми.

Застосування

Для перетворення шаблону на самопідставний обгорніть наявний код шаблону наступним:

{{ {{{|safesubst:}}}#invoke:Unsubst||$B=   [ ... наявний код шаблону ... ]  }} 

Вікітекст для відображення при не підставленні мусить бути надано як «$B». У деяких шаблонах також можна побачити параметр «$N»; це було необхідно у старішій версії цього модуля, але більше не потрібно, і може бути усунено. Такі шаблони автоматично розміщуються в Категорія:Виклики модулів:Unsubst із застосуванням $N.

Всі інші параметри, передані до #invoke, буде скопійовано до згенерованого виклику шаблону як значення за замовчуванням. Якщо значенням будь-якого з цих параметрів є «__DATE__», то це значення у згенерованому виклику шаблону буде замінено поточним місяцем та роком.

Деякі шаблони мають <noinclude>, але не мають відповідного </noinclude> в кінці шаблону. В таких випадках відсутнє </noinclude> мусить бути додане перед кінцевим }}.

Приклад

Розгляньмо шаблон Шаблон:Приклад, що містить наступний код:

{{ {{{|safesubst:}}}#invoke:Unsubst||foo=bar |date=__DATE__ |$B=   [ ... Тут іде код шаблону ... ]  }} 
Оригінал Результат
{{subst:приклад}} {{Приклад|foo=bar|date=липень 2024}}
{{subst:приклад|foo=X}} {{Приклад|foo=X|date=липень 2024}}
{{subst:приклад|baz=X}} {{Приклад|foo=bar|baz=X|date=липень 2024}}
{{subst:приклад|date=січень 2001}} {{Приклад|foo=bar|date=січень 2001}}

Цей модуль містить код, запозичений з модуля «Unsubst» англійської Вікіпедії.

Переклад
local p = {}  local specialParams = { 	['$N'] = 'template name', -- Deprecated, but keeping until it is removed from transcluding templates 	['$B'] = 'template content', }  p[''] = function ( frame ) 	if not frame:getParent() then 		error( '{{#invoke:Unsubst|}} makes no sense without a parent frame' ) 	end 	if not frame.args['$B'] then 		error( '{{#invoke:Unsubst|}} requires parameter $B (template content)' ) 	end 	 	if mw.isSubsting() then 		---- substing 		-- Combine passed args with passed defaults 		local args = {} 		for k, v in pairs( frame.args ) do 			if not specialParams[k] then 				if v == '__DATE__' then 					v = mw.getContentLanguage():formatDate( 'F Y' ) 				end 				args[k] = v 			end 		end 		for k, v in pairs( frame:getParent().args ) do 			args[k] = v 		end  		-- Build an equivalent template invocation 		-- First, find the title to use 		local titleobj = mw.title.new(frame:getParent():getTitle()) 		local title 		if titleobj.namespace == 10 then -- NS_TEMPLATE 			title = titleobj.text 		elseif titleobj.namespace == 0 then -- NS_MAIN 			title = ':' .. titleobj.text 		else 			title = titleobj.prefixedText 		end  		-- Build the invocation body with numbered args first, then named 		local ret = '{{' .. title 		for k, v in ipairs( args ) do 			if string.find( v, '=', 1, true ) then 				-- likely something like 1=foo=bar, we need to do it as a named arg 				break 			end 			ret = ret .. '|' .. v 			args[k] = nil 		end 		for k, v in pairs( args ) do 			ret = ret .. '|' .. k .. '=' .. v 		end 		 		return ret .. '}}' 	else 		---- Not substing 		-- Just return the "body" 		return frame.args['$B'] .. (frame.args['$N'] and frame:getParent():getTitle() == mw.title.getCurrentTitle().prefixedText and '[[Категорія:Виклики модулів:Unsubst із застосуванням $N]]' or '') 	end end  return p