stringtranslate.com

Módulo: comprobar si hay parámetros desconocidos

-- 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