stringtranslate.com

Módulo: Verificar parámetros desconocidos

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