Módulo:Unsubst
Apariencia
[editar] [ ]

Módulo que implementa plantillas que no se pueden sustituir. Esto se implementa usando un módulo que, al sustituirse, devuelve el wikitexto de la plantilla correspondiente.
Además, es posible agregar la fecha de sustitución de forma automática, para propósitos de mantenimiento.
Uso
Para convertir una plantilla en una no sustituible, se debe envolver el código existente con:
{{SAFESUBST:<noinclude />#invoke:Unsubst||$B= [ ... código de la plantilla ... ] }}El wikitexto que no debe ser sustituido se debe agregar como el parámetro "$B". Todos los otros parámetros que se entreguen en el #invoke se copiarán a la plantilla sustituida como valores por defecto. Si el valor de cualquiera de esos parámetros es
__DATE__
, ese parámetro tendrá como valor una cadena del tipo "20251002" que representa el año, mes y día de la sustitución. Esto permite ordenar los artículos por fecha en las categorías de mantenimiento. Esta documentación está transcluida desde Módulo:Unsubst/doc.
Los editores pueden experimentar en la zona de pruebas
Por favor, añade las categorías a la subpágina de documentación.
(subpáginas - enlaces)
Los editores pueden experimentar en la zona de pruebas
Por favor, añade las categorías a la subpágina de documentación.
(subpáginas - enlaces)
local p = {}
local specialParams = {
['$B'] = 'contenido de la plantilla',
}
p[''] = function ( frame )
if not frame:getParent() then
error( '{{#invoke:Unsubst|}} no tiene sentido si no hay un marco padre' )
end
if not frame.args['$B'] then
error( '{{#invoke:Unsubst|}} requiere un parámetro $B (contenido de la plantilla)' )
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( 'Ymd' )
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']
end
end
return p