stringtranslate.com

Módulo: Tabla de scripts de usuario

local  p  =  {} función local allcases ( s ) return s : gsub ( '([%^%$%(%)%%%.%[%]%*%+%-])' , '%%%1' ) : gsub ( '%a' , función ( letra ) return '[' .. letra : mayúscula () .. letra : minúscula () .. ']' end ) end function p . main ( frame ) local rowsToGet = tonumber ( frame . args [ 1 ]) o 200 -- use esto para determinar el número de filas a obtener (predeterminado 200) local rowOffset = tonumber ( frame . args [ 2 ]) o 0 -- use este desplazamiento para permitir múltiples llamadas para construir una tabla más grande local source = mw . title . new ( 'Wikipedia:Scripts de usuario/Scripts más importados' ): getContent () local data = {} local rows = mw . html . create () local count = 0 para script , total , activo en origen : gmatch ( ' \n | %[%[([^%]]+)%]%] - \n | (%d+) - \n | (%d+)' ) hacer count = count + 1 si count > rowOffset entonces local redirectTarget = mw . title . new ( script ). redirectTarget si redirectTarget entonces script = redirectTarget . prefixedText fin local jsContent = mw . title . new (                                                                 script ): getContent ()  o  '' - no incluya scripts que hayan sido borrados o redirigidos como no funcionales if not jsContent : find ( "mw.log.warn( 'Has instalado el userscript" , 1 , true ) then data [ script ] = { total = total , active = active } local desc = script : match ( '(.-)%.[CJcj ] [Ss][Ss]?$' ) local redirectTarget = mw .title .new ( desc ) .redirectTarget if redirectTarget then desc = redirectTarget .prefixedText end local name = desc : match ( '([^/:]-)$' ) local author = script : match ( ' User : ([^%/ ] + )' ) local excerpt = mw .title .new ( desc ): getContent () o '' if excerpt ~= '' entonces extracto = mw . texto . truncar ( extracto --mantener las descripciones de los parámetros de la plantilla --expandir {{u}} en el nivel superior --eliminar otras plantillas : gsub ( "%b{}" , función ( entre corchetes ) local desc_first , desc_rest = entre corchetes : match ( '|%s*[Dd][Ee][Ss][Cc][^=]+=%s*([^|])([^|]+)|' ) si desc_first entonces devuelve desc_first : upper () .. desc_rest fin local usuario = entre corchetes : buscar "^{{[Uu]|([^}]+)}}" si usuario entonces devuelve '[[Usuario:' .. usuario .. '|' ..                                                                  usuario  ..  ']]' fin si está entre corchetes : buscar ( '^{{' ) y entre corchetes : buscar ( '}}$' ) entonces devuelve '' fin fin ) --eliminar imágenes, archivos, medios, categorías : gsub ( '%b[]' , función ( entre corchetes ) devolver entre corchetes : gsub ( '^%[%[%s*(%a+):.-%]%]$' , función ( prefijo_enlace ) prefijo_enlace = prefijo_enlace : lower () si prefijo_enlace == "imagen" o prefijo_enlace == "archivo" o prefijo_enlace == "medios" o prefijo_enlace == "categoría" entonces devuelve "" fin -- de lo contrario déjelo así fin ) fin ) --eliminar espacios manteniendo el texto dentro --eliminar las etiquetas restantes y el texto dentro : gsub ( '<(%a+)[^>]+>(.-)</%1>' , función ( etiqueta , contenidos ) si etiqueta : lower () == "span" entonces devuelve el contenido de lo contrario devuelve "" fin fin ) : gsub ( '%b<>' , '' ) --eliminar cualquier otro marcado de etiqueta : gsub ( '__[^_]+__' , '' ) --eliminar __ marcados : gsub ( '^=+[^=]+=+' , '' ): gsub ( ' \n =+[^=]+=+' , '' ) --eliminar títulos de sección : gsub ( "''+" , "" ) --eliminar marcado en negrita y cursiva : gsub ( ' ' , ' ' ) --reemplazar nbsp espacios con espacios normales :gsub ( '^[:;%s]+' , '' ): gsub ( '                                             \n [:;%s]+' ,  ' \n ' )  --eliminar sangrías, iniciales : gsub ( '{|.- \n |}' , '' ) --eliminar tablas : gsub ( ' \n |[^ \n ]* \n ' , '' ) --eliminar fragmentos de tabla : gsub ( '%s+ \n ' , ' \n ' ) --y espacios finales : gsub ( '(%s)%s+' , '%1' ) --eliminar espacios redundantes : gsub ( allcases ( name ) .. '(%s)' , "'''" .. name .. "'''%1" ) , 600 , '' ): gsub ( '(.+) \n ' , '%1' ) -- truncar al final del último párrafo antes de 600 caracteres .. ' ' .. '[[' .. desc .. '|→]]' .. '<!-- -->' -- agrega un comentario HTML vacío para que si el extracto termina con un comentario sin cerrar (como [[User:Steel359/Protection js]]), no rompa las cosas end if not excerpt then excerpt = '' end local row = rows : tag ( 'tr' ): attr ( 'id' , script ): attr ( 'style' , 'vertical-align:top' ) row : tag ( 'td' ): wikitext ( string.format ( ' \'\'\' [[%s|%s]] \'\'\' <span id="%s" class=scriptInstallerLink></span>' , script , name , script )) row : tag ( 'td' ): wikitext ( string.formato ( '[[Usuario:%s|%s]]' , autor , autor )) fila : etiqueta ( 'td'                               ): wikitexto ( marco : callParserFunction ( '#time' ,  'j M Y' ,  marco : callParserFunction ( 'REVISIONTIMESTAMP' ,  script ))): addClass ( 'nowrap' ): attr ( 'style' , 'text-align:right' ) fila : etiqueta ( 'td' ): wikitexto ( extracto ) fila : etiqueta ( 'td' ): wikitexto ( datos [ script ]. activo ): attr ( 'style' , 'text-align:right' ) fila : etiqueta ( 'td' ): wikitexto ( datos [ script ]. total ): attr ( 'style' , 'text-align:right' ) filas : wikitexto ( ' \n ' ) fin fin si count >= rowsToGet + rowOffset entonces break fin fin devolver filas fin devolver p