stringtranslate.com

Módulo: Redirigir

-- Este módulo proporciona funciones para obtener el destino de una página de redireccionamiento. local p = {} -- Obtiene un objeto mw.title, usando pcall para evitar generar errores de script si -- superamos el costoso límite de conteo de funciones (entre otras posibles causas). local function getTitle (...) local success , titleObj = pcall ( mw . title . new , ...) if success then return titleObj else return nil end end -- Obtiene el nombre de una página a la que conduce un redireccionamiento, o nil si no es un redireccionamiento. function p . getTargetFromText ( text ) local target = string.match ( text , "^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)%]%]" ) o string.match ( text , "^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]" ) return target y mw .uri .decode ( target , 'PATH' ) end -- Obtiene el objetivo de una redirección. Si la página especificada no es una redirección, -- devuelve nil. function p .getTarget ( page , fulltext ) -- Obtiene el objeto de título. Se permiten tanto los nombres de página como los objetos de título -- como entrada. titleObj local si tipo ( página ) == 'cadena' o tipo ( página ) == 'número' entonces titleObj = getTitle ( página ) de lo contrario si tipo ( página ) == 'tabla' y tipo ( página.getContent ) == 'función' entonces titleObj = página de lo contrario error ( cadena.formato ( "argumento incorrecto n.° 1 para 'getTarget'" .. " (se esperaba un objeto de cadena, número o título, se obtuvo %s)" ,                                                tipo ( página ) ), 2 ) fin si no titleObj entonces devuelve nil fin local targetTitle = titleObj . redirectTarget si targetTitle entonces si fulltext entonces devuelve targetTitle . fullText de lo contrario devuelve targetTitle . prefixedText fin de lo contrario devuelve nil fin fin --[[ -- Dado un solo nombre de página, determina a qué página redirecciona y devuelve el -- nombre de la página de destino, o el nombre de la página pasado cuando no es una redirección. El -- nombre de la página pasado se puede proporcionar como texto sin formato o como un enlace de página. -- -- Devuelve el nombre de la página como texto sin formato, o cuando se proporciona el parámetro corchete, como un -- enlace de página. Devuelve un mensaje de error cuando la página no existe o el -- objetivo de la redirección no se puede determinar por alguna razón. --]] función p . luaMain ( rname , bracket , fulltext ) si type ( rname ) ~= " string" o not rname : find ( " %S" ) entonces devuelve nil fin bracket = bracket y "[[%s]]" o "%s" rname = rname : match ( "%[%[(.+)%]%]" ) o rname objetivo local = p.getTarget ( rname , fulltext ) ret local = target o rname ret = getTitle ( ret ) si ret entonces si fulltext entonces ret = ret.fullText de lo contrario ret = ret.prefixedText fin devuelve bracket : format ( ret ) de lo contrario devuelve nil fin fin                                                         -- Proporciona acceso a la función luaMain desde el wikitexto. function  p . main ( frame ) local args = require ( 'Module:Arguments' ). getArgs ( frame , { frameOnly = true }) return p . luaMain ( args [ 1 ], args . bracket , args . fulltext ) o '' end -- Devuelve verdadero si la página especificada es una redirección y falso en caso contrario. function p . luaIsRedirect ( page ) local titleObj = getTitle ( page ) si no titleObj entonces devuelve falso end si titleObj . isRedirect entonces devuelve verdadero de lo contrario devuelve falso end end -- Proporciona acceso a la función luaIsRedirect desde el wikitexto, devolviendo 'sí' -- si la página especificada es una redirección y la cadena en blanco en caso contrario. function p . isRedirect ( frame ) local args = require ( 'Module:Arguments' ). getArgs ( frame , { frameOnly = true }) si p . luaIsRedirect ( args [ 1 ]) entonces devuelve 'sí' de lo contrario devuelve '' fin fin devuelve p