Módulo:Redirección
Aparencia
[ máis información | ver o historial | | | ver as instrucións ]
Obxectivo
[editar a fonte]Módulo que contén funcións para atopar o obxectivo dunha páxina de redireccións.
Uso
[editar a fonte]A función principal acepta o nome dunha única páxina. Determina se a páxina é unha redirección. Se é unha redirección procura a páxina, extrae o obxectivo e devolve o obxectivo como texto.
{{#invoke:redirección|main|nome-páxina-redirección}}
.
Exemplos
[editar a fonte]{{#invoke:redirección|main|Rosalía}}
→ Rosalía de Castro{{#invoke:redirección|main|[[Rosalía]]|bracket=yes}}
→ Rosalía de Castro{{#invoke:redirección|main|WP:EXT}}
→ Wikipedia:Ligazóns externas
[ máis información | ver o historial | | | ver as instrucións ]
Esta documentación está transcluída desde Módulo:Redirección/uso. Os editores poden probar cambios no mesmo en Módulo:Redirección/probas.
Por favor, engade as categorías na subpáxina de documentación e os interwikis no Wikidata. Ver as subpáxinas deste módulo.
Por favor, engade as categorías na subpáxina de documentación e os interwikis no Wikidata. Ver as subpáxinas deste módulo.
-- Funciones para determinar si una página es una redirección, y en su caso resolverla.
-- Adaptado de [[en:Module:Redirect]]
-- (https://en.wikipedia.org/w/index.php?title=Module:Redirect&oldid=773537701).
local p = {}
-- *** Funciones para uso desde código wiki ***
-- Determina si una página es una redirección. Si lo es, devuelve 'sí' (sin
-- las comillas). Si no lo es (o no existe, etc.), devuelve una cadena vacía.
function p.isRedirect(frame)
if p.luaIsRedirect(frame.args[1]) then
return 'sí'
else
return ''
end
end
-- Determina si una página es una redirección a otra concreta (o a una sección de esta).
-- Si lo es, devuelve 'sí' (sin las comillas). Si no lo es (o no existe, etc.), devuelve
-- una cadena vacía.
function p.isRedirectTo(frame)
local targetTitle = p.luaGetTitle(frame.args[2])
if not targetTitle then
return ''
end
if p.luaGetRedirectTarget(frame.args[1], targetTitle.fragment) == targetTitle.fullText then
return 'sí'
else
return ''
end
end
-- Determina si una página es una redirección a la página actual (o a alguna sección
-- de esta). Si lo es, devuelve 'sí' (sin las comillas). Si no lo es (o no existe,
-- etc.), devuelve una cadena vacía.
function p.isRedirectHere(frame)
local here = mw.title.getCurrentTitle().prefixedText
if p.luaGetRedirectTarget(frame.args[1], false) == here then
return 'sí'
else
return ''
end
end
-- Determina si una página es una redirección. Si lo es, devuelve su destino.
-- Si no lo es (o no existe, etc.), devuelve una cadena vacía.
function p.getRedirectTarget(frame)
local target = p.luaGetRedirectTarget(frame.args[1], true)
if target then
return target
else
return ''
end
end
-- Determina si una página es una redirección. Si lo es, devuelve su destino.
-- Si no lo es (o no existe, etc.), devuelve el propio título, en forma canónica.
-- Si no es un título válido, devuelve una cadena vacía.
function p.solveRedirects(frame)
local pageTitle = p.luaGetTitle(frame.args[1])
if not pageTitle then
return ''
end
return p.luaGetRedirectTarget(pageTitle.fullText, true) or pageTitle.fullText
end
-- *** Funciones para uso desde Lua ***
-- Obtiene el destino de una redirección. Si la página especificada no es una
-- redirección, devuelve nil.
-- Obtiene el objeto del título. Ambos nombres de las páginas y objetos de título se permiten
-- como entrada.
function p.luaGetRedirectTarget(page, fulltext)
local titleObj
if type(page) == 'string' or type(page) == 'number' then
titleObj = p.luaGetTitle(page)
elseif type(page) == 'table' and type(page.getContent) == 'function' then
titleObj = page
else
error(string.format(
"Argumento non válido #1 para 'luaGetRedirectTarget'"
.. " (Agárdase string - texto , number - número ou obxecto de título, e o tipo dado é %s)",
type(page)
), 2)
end
if not titleObj or not titleObj.isRedirect then
return nil
end
local target = titleObj.redirectTarget
if target then
if fulltext then
return target.fullText
else
return target.prefixedText
end
else
return nil
end
end
-- Determina si una página es una redirección.
function p.luaIsRedirect(page)
local titleObj = p.luaGetTitle(page)
if not titleObj then
return false
end
if titleObj.isRedirect then
return true
else
return false
end
end
-- Obtiene un objeto mw.title, utilizando pcall para evitar generar errores de script si
-- están por encima del límite de recuento porque la función es costosa (entre otras causas posibles).
function p.luaGetTitle(...)
local success, titleObj = pcall(mw.title.new, ...)
if success then
return titleObj
else
return nil
end
end
-- *** Funciones para compatibilidad con [[en:Module:Redirect]] ***
-- Equivalente a getTarget de https://en.wikipedia.org/w/index.php?title=Module:Redirect&oldid=773537701.
function p.getTarget(page, fulltext)
return p.luaGetRedirectTarget(page, fulltext)
end
--Teniendo en cuenta un solo nombre de la página determina que página se redirige a y devuelve el
-- nombre de la página de destino, o el nombre de la página pasa cuando no una redirección. El pasado
-- nombre de la página se puede dar como texto sin formato o como vínculo.
--
-- Devuelve nombre de la página como texto sin formato, o cuando se da el parámetro de soporte, como un
-- vínculo. Devuelve un mensaje de error cuando la página no existe o la redirección
-- de destino no se puede determinar por alguna razón.
--
-- Equivalente a luaMain de https://en.wikipedia.org/w/index.php?title=Module:Redirect&oldid=773537701.
function p.luaMain(rname, bracket, fulltext)
if type(rname) ~= "string" or not rname:find("%S") then
return nil
end
bracket = bracket and "[[%s]]" or "%s"
rname = rname:match("%[%[(.+)%]%]") or rname
local target = p.luaGetRedirectTarget(rname, fulltext)
local ret = target or rname
ret = p.luaGetTitle(ret)
if ret then
if fulltext then
ret = ret.fullText
else
ret = ret.prefixedText
end
return bracket:format(ret)
else
return nil
end
end
-- Proporciona acceso a luaMain desde el código wiki.
-- Equivalente a main de https://en.wikipedia.org/w/index.php?title=Module:Redirect&oldid=773537701.
function p.main(frame)
return p.luaMain(frame.args[1], frame.args.bracket, frame.args.fulltext) or ''
end
return p