Módulo: Verificar parámetros desconocidos se utiliza para verificar el uso de parámetros desconocidos en una plantilla o módulo. Puede agregarse a una plantilla al final o llamarse directamente desde un módulo.
Para ordenar las entradas en una categoría de seguimiento por parámetro, utilice:
{{#invoke:Check for unknown parameters|check|unknown=[[Category:Some tracking category|_VALUE_]]|arg1|arg2|arg3|argN}}
Para ordenar las entradas en una categoría de seguimiento por parámetro con un mensaje de error de vista previa, utilice:
{{#invoke:Check for unknown parameters|check|unknown=[[Category:Some tracking category|_VALUE_]]|preview=unknown parameter "_VALUE_"|arg1|arg2|...|argN}}
Para obtener un mensaje de error rojo explícito, utilice:
{{#invoke:Check for unknown parameters|check|unknown=<span class="error">Sorry, I don't recognize _VALUE_</span>|arg1|arg2|...|argN}}
Para utilizar patrones de Lua, utilice:
{{#invoke:Check for unknown parameters|check|unknown=[[Category:Some tracking category|_VALUE_]]|preview=unknown parameter "_VALUE_"|arg1|arg2|...|argN|regexp1=header[%d]+|regexp2=date[1-9]}}
Para llamar desde un módulo, utilice:
checkForUnknownParameters local = require ( "Módulo:Verificar parámetros desconocidos " ) resultado local = checkForUnknownParameters._check ( validArgs , args )
Donde el primer conjunto de argumentos son los argumentos del módulo a continuación y el segundo conjunto de argumentos son los parámetros que se verifican.
arg1
, arg2
, ..., argN
, son los parámetros conocidos.|1|2|arg1|arg2|...
.|regexp1=header[%d]+
, |regexp2=date[1-9]
, |regexp3=data[%d]+[abc]?
). Esto resulta útil cuando hay muchos parámetros conocidos que utilizan un patrón sistemático.|unknown=
– ¿Qué sucede cuando se utiliza un parámetro desconocido? Normalmente, se utiliza una categoría de seguimiento para colocar páginas que utilizan parámetros desconocidos o un error.|preview=
– el texto que se mostrará cuando esté en modo de vista previa y se utilice un parámetro desconocido._VALUE_
palabra clave, si se utiliza, se cambiará por el nombre del parámetro. Esto resulta útil para ordenar las entradas en una categoría de seguimiento o para proporcionar información más explícita.|ignoreblank=1
– de forma predeterminada, el módulo no hace distinción entre un parámetro definido pero en blanco y un parámetro que no está en blanco. Es decir, tanto los que no están en la lista |foo=x
como |foo=
los que se informan. Para realizar un seguimiento solo de los parámetros que no están en blanco, utilice |ignoreblank=1
.|showblankpositional=1
– de forma predeterminada, el módulo ignora los parámetros posicionales en blanco. Es decir, |2=
se ignoran los que no figuran en la lista. Para incluir parámetros posicionales en blanco en el seguimiento, utilice |showblankpositional=1
.{{ Infobox | arriba = {{{ nombre |}}}| etiqueta1 = Altura | datos1 = {{{ altura |}}}| etiqueta2 = Peso | datos2 = {{{ peso |}}}| label3 = Sitio web | data3 = {{{ sitio web |}}} }} <!-- fin del cuadro de información, inicio del seguimiento --> {{ #invoke : Verificar parámetros desconocidos | check | unknown = {{ Main other |[[ Category : Alguna categoría de seguimiento | _VALUE_ ]]}} | preview = parámetro desconocido "_VALUE_" | altura | nombre | sitio web | peso }}
Consulte el final del cuadro Módulo:Rugby para ver un ejemplo simple o Módulo:Infobox3cols o Módulo:Flag para ver ejemplos más complicados.
-- Este módulo puede usarse para comparar los argumentos pasados al padre -- con una lista de argumentos, devolviendo un resultado especificado si un argumento -- no está en la lista require ( 'strict' ); local p = {} función local trim ( s ) return s : match ( '^%s*(.-)%s*$' ) fin función local isnotempty ( s ) return s y s : match ( '%S' ) fin función local clean ( text ) -- Devuelve el texto limpiado para su visualización y truncado si es demasiado largo. -- Los marcadores de tira se reemplazan con texto ficticio que representa el wikitexto original. local pos , truncado función local truncate ( text ) si se trunca, entonces devuelve '' fin si mw . ustring . len ( text ) > 25 entonces truncado = verdadero text = mw . ustring . sub ( text , 1 , 25 ) .. '...' fin devuelve mw . text . nowiki ( texto ) fin local partes = {} para antes , etiqueta , resto en texto : gmatch ( '([^ \127 ]*) \127 [^ \127 ]*%-(%l+)%-[^ \127 ]* \127 ()' ) hacer pos = resto tabla.insertar ( partes , truncar ( antes ) .. '<' .. etiqueta .. '>...</' .. etiqueta .. '>' ) fin tabla.insertar ( partes , truncar ( texto : sub ( pos o 1 ))) retorna tabla.concat ( partes ) fin de la función p . _check ( args , pargs ) if type ( args ) ~= "table" or type ( pargs ) ~= "table" then -- TODO: manejo de errores return end -- crea la lista de argumentos conocidos, expresiones regulares y la cadena de retorno localknownargs = {} local regexps = {} for k , v in pairs ( args ) do if type ( k ) == 'number' then v = trim ( v ) knownargs [ v ] = 1 elseif k : find ( '^regexp[1-9][0-9]*$' ) then table.insert ( regexps , '^' .. v .. '$' ) end end -- recorre los argumentos principales y asegúrate de que estén en la lista local ignoreblank = isnotempty ( args [ 'ignoreblank' ]) local showblankpos = isnotempty ( args [ 'showblankpositional' ]) local values = {} for k , v en pares ( pargs ) hacen si type ( k ) == ' string ' yknownargs [ k ] == nil entoncesknownflag local = false para _ , regexp en ipairs ( regexps ) hacen si mw.ustring.match ( k , regexp ) entonces knownflag = true break end end si no esknownflag y ( no ignoreblank o isnotempty ( v ) ) entonces tabla.insert ( valores , clean ( k )) fin de lo contrario si tipo(k) == 'número' yknownargs [ tostring ( k ) ] == nulo entonces localknownflag = falso para _ , expresión regular en ipairs ( expecciones regulares ) hacer si mw.ustring.match ( tostring ( k ) , expresión regular ) entonces conocido = verdadero break end end si no esknownflag y ( mostrarblankpos o isnotempty ( v ) ) entonces tabla.insert ( valores , k ... ' = ' ... clean ( v ) ) fin fin fin -- añadir resultados a las tablas de salida local res = { } si # valores > 0 entonces local unknown_text = args [ ' desconocido' ] o 'Se encontró _VALOR_ , ' si mw . getCurrentFrame (): preprocess ( "{{REVISIONID}}" ) == "" entonces local preview_text = args [ 'vista previa' ] si no estátempty ( preview_text ) entonces preview_text = require ( 'Módulo:Si preview' )._ warning ({ preview_text }) elseif preview_text == nil entonces preview_text = texto_desconocido fin texto_desconocido = preview_text end for _ , v in pairs ( values ) do -- Corrige un error extraño para | = que se elimina a la cadena vacía y -- rompe los vínculos de categoría si v == '' entonces v = ' ' end -- evita el error con v = 'example%2' ("índice de captura no válido") local r = unknown_text : gsub ( '_VALUE_' , { _VALUE_ = v } ) table.insert ( res , r ) end end return table.concat ( res ) end function p.check ( frame ) local args = frame.args local pargs = frame : getParent ( ) . args return p._check ( args , pargs ) end return p