Este módulo se puede agregar a una plantilla para verificar el uso de parámetros desconocidos. A diferencia de muchos otros módulos, este módulo no se implementa mediante una plantilla.
{{ #invoke : comprobar si hay parámetros desconocidos | comprobar | desconocido = [[ Categoría : Alguna categoría de seguimiento ]] | arg1 | arg2 | arg3 | argN }}
o para ordenar las entradas en la categoría de seguimiento por parámetro con un mensaje de error de vista previa
{{ #invoke : comprobar si hay parámetros desconocidos | comprobar | desconocido = [[ Categoría : Alguna categoría de seguimiento | _VALOR_ ]] | vista previa = parámetro desconocido "_VALUE_" | arg1 | arg2 | ... | argN }}
o para un mensaje de error rojo explícito
{{ #invoke : comprobar si hay parámetros desconocidos | comprobar | desconocido = < abarcan clase = "error" > Lo siento, no reconozco _VALUE_ </ abarcan > | arg1 | arg2 | ... | argN }}
Aquí, arg1
, arg2
, ..., argN
, están los parámetros conocidos. También se pueden agregar parámetros sin nombre (posicionales): |1|2|argname1|argname2|...
. Cualquier parámetro que se utilice, pero que no esté en esta lista, hará que el módulo devuelva lo que se pase con el unknown
parámetro. La _VALUE_
palabra clave, si se utiliza, se cambiará por el nombre del parámetro. Esto es útil para ordenar las entradas en una categoría de seguimiento o para proporcionar información más explícita.
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 no cotizados |foo=x
como |foo=
los reportados. Para realizar un seguimiento únicamente de los parámetros que no están en blanco, utilice |ignoreblank=1
.
De forma predeterminada, el módulo ignora los parámetros posicionales en blanco. Es decir, |2=
se ignora un no listado. Para incluir parámetros posicionales en blanco en el uso de seguimiento |showblankpositional=1
.
Este módulo admite patrones Lua (similares a las expresiones regulares ), que son útiles cuando hay muchos parámetros conocidos que utilizan un patrón sistemático. Por ejemplo, Infobox3cols
utiliza
regexp1 = "encabezado[%d]+" , regexp2 = "etiqueta[%d]+" , regexp3 = "datos[%d]+[abc]?" , regexp4 = "clase[%d]+[abc]?" , regexp5 = "clase de fila[%d]+" , regexp6 = "estilo de fila[%d]+" , regexp7 = "estilo de celda de fila[%d]+" ,
para que coincida con todos los parámetros de la forma headerNUM
, labelNUM
, dataNUM
, dataNUMa
, dataNUMb
, dataNUMc
, ..., rowcellstyleNUM
, donde NUM es una cadena de dígitos.
{{ Cuadro de información | arriba = {{{ nombre |}}}| etiqueta1 = Altura | datos1 = {{{ altura |}}}| etiqueta2 = Peso | datos2 = {{{ peso |}}}| etiqueta3 = Sitio web | data3 = {{{ sitio web |}}} }} <!-- finalizar el cuadro de información, iniciar el seguimiento --> {{ #invoke : comprobar si hay parámetros desconocidos | comprobar | desconocido = {{ Otro principal |[[ Categoría : Alguna categoría de seguimiento | _VALOR_ ]]}} | vista previa = parámetro desconocido "_VALUE_" | nombre | altura | peso | sitio web }}
Consulte el final de Módulo:Rugby box para ver un ejemplo sencillo o Módulo:Infobox3cols o Módulo:Flag para ejemplos más complicados.
-- Este módulo puede usarse para comparar los argumentos pasados al padre -- con una lista de argumentos, devolviendo un resultado específico si un argumento -- no está en la lista local p = {} función local trim ( s ) return s : coincide ( '^%s*(.-)%s*$' ) finaliza la función local isnotempty ( s ) devuelve s y s : coincide ( '%S' ) finaliza la función local limpia ( texto ) -- Devuelve el texto limpio para mostrar y truncar si es demasiado largo. -- Los marcadores de tira se reemplazan con texto ficticio que representa el wikitexto original. pos local , función local truncada truncar ( texto ) si está truncado , devuelve ' ' end if mw . cuerda . len ( texto ) > 25 luego truncado = verdadero texto = mw . cuerda . sub ( texto , 1 , 25 ) .. '...' fin devuelve mw . texto . nowiki ( texto ) finaliza las partes locales = {} para antes , etiqueta , resto en el texto : gmatch ( '([^ \127 ]*) \127 [^ \127 ]*%-(%l+)%-[^ \127 ]* \127 ()' ) hacer pos = resto table.insert ( partes , truncar ( antes ) .. '<' .. etiqueta .. '>...</' .. etiqueta .. '> ;' ) end table.insert ( partes , truncar ( texto : sub ( pos o 1 ))) return table.concat ( partes ) función final p . _check ( args , pargs ) si tipo ( args ) ~= "table" o tipo ( pargs ) ~= "table" entonces - TODO: manejo de errores fin de retorno - crea la lista de argumentos conocidos, expresiones regulares y el retorno string localknownargs = {} expresiones regulares locales = {} para k , v en pares ( args ) hazlo si escribe ( k ) == 'número' entonces v = trim ( v ) knownargs [ v ] = 1 elseif k : find ( ' ^regexp[1-9][0-9]*$' ) luego table.insert ( regexps , '^' .. v .. '$' ) end end - recorra los argumentos principales y asegúrese de que estén en la lista local ignoreblank = isnotempty ( args [ 'ignoreblank' ]) local showblankpos = isnotempty ( args [ 'showblankpositional' ]) valores locales = {} para k , v en pares ( pargs ) do if type ( k ) == ' cadena' y argumentos conocidos [ k ] == nil entonces bandera conocida local = falso para _ , expresión regular en ipairs ( expres regulares ) hazlo si mw . cuerda . partido ( k , expresión regular ) entonces bandera conocida = verdadero romper el final si no se conoce la bandera y ( no ignorar el espacio en blanco o no está vacío ( v ) ) entonces table.insert ( valores , limpiar ( k )) terminar el resto si tipo ( k ) == 'número' y argumentos conocidos [ tostring ( k )] == nil entonces localknownflag = false para _ , regexp en ipairs ( regexps ) hazlo si mw . cuerda . match ( tostring ( k ), regexp ) luego knowflag = true break end end si no se conoce flag y ( showblankpos o isnotempty ( v ) ) luego table.insert ( values , k .. '=' .. clean ( v )) end end final : agregue resultados a las tablas de salida local res = {} si # valores > 0 entonces local desconocido_texto = args [ 'desconocido' ] o 'Encontrado _VALOR_, ' si mw . getCurrentFrame (): preprocesamiento ( "{{REVISIONID}}" ) == "" luego vista previa_texto = args [ ' vista previa' ] si no está en uso ( texto_vista previa ) entonces texto_vista previa = requerir ( 'Módulo:Si vista previa' ). _warning ({ vista previa_texto }) elseif vista previa == nula entonces vista previa_texto = texto_desconocido finaliza_texto_desconocido = vista previa_texto final para _ , v en pares ( valores ) do - Corregir error extraño para | = que se reduce a la cadena vacía y -- rompe los enlaces de categoría si v == '' entonces v = '' final -- evita el error con v = 'example%2' ("índice de captura no válido") local r = texto_desconocido : gsub ( '_VALUE_' , { _VALUE_ = v }) table.insert ( res , r ) end end return table.concat ( res ) end function p . comprobar ( marco ) argumentos locales = marco . args pargs locales = marco : getParent (). argumentos devuelven p . _check ( args , pargs ) finaliza retorno p