Archivo |
---|
Archivos actuales:
Archivos de solicitudes:
Otro:
|
Formato de fecha fuera de las citas
Siguiendo con este hilo de VPT , me he encontrado con varios casos en los que se han usado fechas en plantillas (como {{ Wikipedia hablada }}) y quería formatear esas fechas de manera apropiada según si un artículo está etiquetado con {{ use mdy fechas }} o {{ use dmy fechas }}. Para hacer esto, The Earwig mencionó que parte del código en el módulo CS1 tendría que ser movido. ¿Alguien que esté familiarizado con la codificación de módulos estaría dispuesto a ayudar? {{u | Sdkb }} charla 05:39, 31 de marzo de 2021 (UTC)
- Eso requeriría mucho cuidado para evitar una sobrecarga tremendamente alta al obtener una vista previa o publicar una edición. Necesitaría recordarme a mí mismo para estar seguro, pero ISTR que el módulo CS1 carga el wikitexto de la página actual y luego analiza el wikitexto para decidir si usar las fechas dmy o mdy. Si (eso es si ) es una buena idea, debe hacerse una sola vez por página, no una vez por cada plantilla donde alguien piensa que sería bueno tener fechas de formato automático. Mi corazonada es que esto debería hacerse con algunas mejoras de software. Ocasionalmente me he preguntado si Scribunto (Lua) podría permitir una tabla global por página que pudiera escribirse y leerse usando llamadas mw. Ese es el tipo de cosas que haría factible la idea de la elección automática del formato dmy / mdy. Johnuniq ( charla ) 06:53, 31 de marzo de 2021 (UTC)
- Hmm, bueno saberlo. No estoy muy seguro de qué es lo que permite hacer las referencias, pero es tan caro hacerlo fuera de ellas; ¿Supongo que hay algo? {{u | Sdkb }} charla 10:04, 31 de marzo de 2021 (UTC)
- Estoy diciendo que si una referencia lee y analiza toda la página para obtener el formato de fecha, esa información debería estar disponible para otros módulos / plantillas para que no tengan que leer y analizar también toda la página. Hay una forma que podría organizarse que implicaría escribir un solo módulo para leer y analizar toda la página y devolver una tabla de lo que encuentra, incluido el formato de fecha. El módulo de referencia necesitaría usar ese módulo central usando mw.loadData que carga la tabla una vez por página sin importar cuántas veces se cargue el módulo central. Luego, otra plantilla podría (a través de un módulo) también mw.loadData la tabla. Solo la primera carga implicaría leer y analizar toda la página. Así es como funcionan las referencias ahora, pero la información es parte del sistema de referencia y (imagino que no he mirado) no está disponible para otra plantilla. Creo que el primer paso podría ser una discusión central sobre la conveniencia del esquema si es técnicamente factible. Por ejemplo, su enlace al hilo VPT no mostró mucho entusiasmo y un comentario decía "se abolió el formato automático de fecha". Johnuniq ( charla ) 02:50, 1 de abril de 2021 (UTC)
- Johnuniq , ah, lo tengo, gracias por la explicación. Redrose64 , ¿tiene un enlace a esa discusión por casualidad? ¿Y a lo que te refieres es lo mismo que estoy hablando aquí, o era el tipo de cosa en la que los usuarios podían establecer preferencias de formato de fecha? {{u | Sdkb }} charla 03:04, 1 de abril de 2021 (UTC)
- esta es una idea inteligente, pero no creo que sea buena. Actualmente, la página del documento menciona mw.ext.cattools (que aún no está disponible en wikis wikimedia), lo que supuestamente permitirá preguntar si la página actual pertenece a alguna categoría. Debería ser sencillo enseñar a estas plantillas (por ejemplo, {{ use mdy date }}) alguna categoría conocida, que cualquier módulo podrá probar. no es una buena práctica leer páginas de contenido de scribuntu.
- (Divulgación fuera del tema: lo hago yo mismo, no para las páginas de contenido sino para las páginas de plantilla, porque el equipo de "templatedata" y el equipo de "scribuntu" no se comunican entre sí. Leer templatedata es algo que los módulos quieren hacer a menudo, pero desafortunadamente mw. La extensión templatedata scribuntu aún no se ha escrito. Consulte phab: T107119 ).
- paz - קיפודנחש (también conocido como kipod) ( charla ) 00:46, 8 de abril de 2021 (UTC)
- Johnuniq , ah, lo tengo, gracias por la explicación. Redrose64 , ¿tiene un enlace a esa discusión por casualidad? ¿Y a lo que te refieres es lo mismo que estoy hablando aquí, o era el tipo de cosa en la que los usuarios podían establecer preferencias de formato de fecha? {{u | Sdkb }} charla 03:04, 1 de abril de 2021 (UTC)
- Estoy diciendo que si una referencia lee y analiza toda la página para obtener el formato de fecha, esa información debería estar disponible para otros módulos / plantillas para que no tengan que leer y analizar también toda la página. Hay una forma que podría organizarse que implicaría escribir un solo módulo para leer y analizar toda la página y devolver una tabla de lo que encuentra, incluido el formato de fecha. El módulo de referencia necesitaría usar ese módulo central usando mw.loadData que carga la tabla una vez por página sin importar cuántas veces se cargue el módulo central. Luego, otra plantilla podría (a través de un módulo) también mw.loadData la tabla. Solo la primera carga implicaría leer y analizar toda la página. Así es como funcionan las referencias ahora, pero la información es parte del sistema de referencia y (imagino que no he mirado) no está disponible para otra plantilla. Creo que el primer paso podría ser una discusión central sobre la conveniencia del esquema si es técnicamente factible. Por ejemplo, su enlace al hilo VPT no mostró mucho entusiasmo y un comentario decía "se abolió el formato automático de fecha". Johnuniq ( charla ) 02:50, 1 de abril de 2021 (UTC)
- Hmm, bueno saberlo. No estoy muy seguro de qué es lo que permite hacer las referencias, pero es tan caro hacerlo fuera de ellas; ¿Supongo que hay algo? {{u | Sdkb }} charla 10:04, 31 de marzo de 2021 (UTC)
Obtener información de usuario a través de Lua
Estoy tratando de hacer una plantilla que toma un nombre de usuario, verifica cuántas ediciones ha realizado y la genera. No podría hacer eso usando plantillas normales y me pregunto si hay alguna forma de hacerlo a través de Lua. - Aknell4 ( charla ) 19:18, 11 de abril de 2021 (UTC)
- En teoría, podría analizar el wikitexto de Wikipedia: Lista de wikipedistas por número de ediciones (que se pueden hacer en Lua directamente o en Wikitexto usando Módulo: Página y Módulo: Cadena ), pero de lo contrario, esto tampoco es posible con Lua. * Pppery * ha comenzado ... 21:42, 11 de abril de 2021 (UTC)
Obteniendo información para un ID de diferencia
Estoy tratando de obtener el nombre de usuario y la fecha del autor a partir de un número de identificación diferencial para usar en una plantilla. ¿Existe algún módulo Lua o API que pueda lograr esto? Si no es así, ¿hay alguna forma de obtener una revisión de una página y analizar un poco la cadena para extraer esta información? Sr ey Sr os talk 01:56, 5 de mayo de 2021 (UTC)
- Estoy bastante seguro de que Lua no puede hacer esto, pero la API sí. La API requeriría JavaScript, que no se puede llamar desde una plantilla. En otras palabras, no creo que pueda obtener una plantilla para hacer esto. Si no aparecen más comentarios aquí, puede probar WP: VPT . Johnuniq ( charla ) 03:58, 5 de mayo de 2021 (UTC)
table.sort
Acabo de recibir una nota en mi página de discusión de que los jugadores en la plantilla actual de la plantilla: Atlanta Dream no estaban completamente ordenados por número, con 40 antes de 25 y 32. Al principio, pensé que ipairs () no estaba procesando la tabla en orden , así que probé esto que no tuvo ningún impacto. después de eso, hice este cambio que llama a table.sort () dos veces en lugar de una y el problema se solucionó. ¿Hay algún problema con mi función de clasificación o se trata de un error conocido? gracias. Frietjes ( charla ) 16:25, 20 de mayo de 2021 (UTC)
- @ Frietjes : El problema puede estar en
(a['last'] or 'ZZZZ') < (b['last'] .. 'ZZZZ')
. Si x ['último'] == y ['último'] (ambos "Williams", digamos) entonces esto es cierto para x(¿Quiso decir ?) Sin embargo, esa comparación solo debería ocurrir cuando los números son iguales, que no lo son. Certes ( charla ) 16:51, 20 de mayo de 2021 (UTC) b['last'] or 'ZZZZ'
- Certes , gracias por encontrar ese error. como dijiste, esa comparación solo debería ocurrir cuando los números son iguales. pero, cuando soluciono ese error en la caja de arena, ahora se están ordenando correctamente (ver Plantilla: lista actual / caja de arena de Atlanta Dream ) con solo una tabla.sort ()? Frietjes ( charla ) 17:08, 20 de mayo de 2021 (UTC)
- Además, a menudo creo una clave de clasificación de longitud fija para usar en la clasificación de registros / entradas (es decir, números de formato con ceros a la izquierda, nombre en mayúsculas / minúsculas o no según los deseos de distinción entre mayúsculas y minúsculas, expansiones de código, búsquedas iniciales y tipo de entrada etc.). Como conozco las longitudes o cada posición de la clave, puedo manipular la clave de clasificación original en consecuencia para crear otras nuevas para clasificar. A menudo lo usaba para producir autor, título, índices de palabras clave para manuales, catálogos, libros, etc. Este puede ser o no otro enfoque a considerar. - Matroc ( charla ) 05:13, 25 de mayo de 2021 (UTC)
- Certes , gracias por encontrar ese error. como dijiste, esa comparación solo debería ocurrir cuando los números son iguales. pero, cuando soluciono ese error en la caja de arena, ahora se están ordenando correctamente (ver Plantilla: lista actual / caja de arena de Atlanta Dream ) con solo una tabla.sort ()? Frietjes ( charla ) 17:08, 20 de mayo de 2021 (UTC)
¿Se puede hacer esto más delgado y más mezquino?
¿Hay algo que pueda hacer para hacer esto más ligero y evitar la ruptura en la fila 218 ? Salud. - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ( hablar ) 22:44, 25 de mayo de 2021 (UTC)
- Al mirar el código fuente HTML de la zona de pruebas, se muestra el
recuento de funciones del analizador caro: 477/500
. Sospecho que está rompiendo en la fila 218 para evitar pasar el límite de 500. Además,Uso de tiempo Lua: 7.063 / 10.000 segundos, lo
que sugiere que alcanzaría ese límite después de aproximadamente 300 filas. Eche un vistazo a mw: Extension: Scribunto / Lua reference manual para ver qué funciones costosas podría llamar con menos frecuencia. Certes ( charla ) 14:13, 26 de mayo de 2021 (UTC)- Las costosas funciones del analizador para cada página de gadget son
mw.title.new()
ymRedirect.luaIsRedirect()
. Lo primero es necesario para obtener el contenido, mientras que comentar lo último no parece hacer una diferencia y reduce a la mitad el recuento de funciones costosas. - El límite actual de 217 parece deberse a los caracteres del gadget 218: Usuario: קיפודנחש / TemplateParamWizard.js . Esto provoca un mal argumento en el error gsub.
- Sin embargo, el principal problema es el tiempo y no veo cómo se puede evitar, ya que se debe recuperar el contenido de cada página. La única solución que puedo ver es invocar el módulo varias veces desde la plantilla usando algo como esto:
- Las costosas funciones del analizador para cada página de gadget son
local rowsToGet = frame: getParent (). args ['número-filas'] o 200 - use esto para determinar el número de filas a obtener (por defecto 200) local rowOffset = frame: getParent (). args ['rows-offset'] o 0 - use este offset para permitir que múltiples llamadas construyan una tabla más grande ...cuenta = cuenta + 1si cuenta> rowOffset entonces ...finalsi cuenta> rowsToGet + rowOffset -1 entonces devuelve mytable end ...
- Esto necesitaría un cambio en la forma en que se construyó la tabla, ya que el encabezado debería ser manejado por la plantilla en lugar del módulo y el módulo solo devolvería bloques de filas. - Jts1882 | charla 15:08, 26 de mayo de 2021 (UTC)
- Eso no funciona, ya que el límite de tiempo de Lua de 10 segundos se comparte entre todas las invocaciones. La única forma en la que puedo pensar es mover partes de la tabla a subplantillas actualizadas usando {{ caché de plantilla }} * Pppery * ha comenzado ... 15:18, 26 de mayo de 2021 (UTC)
La única forma de evitarlo que se me ocurre es mover partes de la tabla a sub-plantillas actualizadas usando {{ caché de plantilla }}.
- ¿Como eso?
- {{ Tabla de secuencias de comandos de usuario }}
{{User_scripts_table / 1}}{{User_scripts_table / 2}}{{User_scripts_table / 3}}{{User_scripts_table / 4}} {{doc}} - {{ Tabla de secuencias de comandos de usuario / main }}
{{#invoke: Tabla de scripts de usuario | principal | filas = {{{1 | filas}}} | offset = {{{2 | offset}}}}}{{doc}} - {{ Tabla de secuencias de comandos de usuario / 1 }}
{{caché de plantilla | Tabla de secuencias de comandos de usuario / principal | 250 | 0}}
{{doc}} - etc ... - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ( hablar ) 02:46, 27 de mayo de 2021 (UTC)
- Sí, esa es la idea. Hice una pequeña corrección en Template: User scripts table / main , pero de lo contrario debería funcionar tan pronto como PearBOT se ejecute a las 03:30 UTC (en 33 minutos) * Pppery * ha comenzado ... 02:57, 27 Mayo de 2021 (UTC)
- Ese intento específico falló porque {{ template cache }} no funciona correctamente cuando está dentro de las
etiquetas. Hice algunos cambios en las subplantillas para solucionarlo, que deberían actualizarse correctamente en otra hora. * Pppery * ha comenzado ... 03:44, 27 de mayo de 2021 (UTC)... - 👍 ¡Increíble! Sin embargo, noté que {{ User_scripts_table / 1 }} se rompió en 154 (incluso faltan las dos últimas celdas). ¿También tiene un límite? (Sin embargo, no es problema; puedo cortarlo en trozos de 150 filas en su lugar.) - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ( hablar ) 05:42, 27 de mayo de 2021 (UTC)
- Usos reales de {{ template cache }} que no son de portal !? ¡Eso es genial! El bot realmente no hace nada sofisticado y simplemente sustituye la plantilla que se le dio. Si alcanza los límites de la plantilla, obtendrá los mismos problemas que si un usuario normal alcanza los límites de la plantilla. Tampoco estoy seguro de lo fácil que es solucionar el problema de solo inclusión, proviene del bot que verifica las transclusiones de la caché de la plantilla para determinar qué páginas usan la función. Dado que la plantilla no se transcluye en la plantilla principal, si está dentro de includeonly, el bot no la encuentra. Si hay una demanda real para la función, me complace mejorarla. - Trialpears ( charla ) 07:08, 27 de mayo de 2021 (UTC)
- La cosa dentro de las
etiquetas que causó que las cosas se rompieran fueron los comentarios "Template cache top" y "Template cache bottom", que confundieron a PearBOT ya que el... subst:
marcado no se expande allí, no la llamada {{ template cache }} en sí. * Pppery * ha comenzado ... 12:25, 27 de mayo de 2021 (UTC) - @ Trialpears : Dos preguntas:
- ¿Necesito establecer una frecuencia para las actualizaciones o se establece de forma predeterminada en el horario por horas? Me doy cuenta de que los cachés no se actualizan después del primero.
- ¿Cómo podemos evitar que la marca de tiempo fuera del comentario se transfiera a la caché? (por ejemplo, aquí ).
- - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ( conversación ) 09:51, 28 de mayo de 2021 (UTC)
- Guarapiranga Sin frecuencia tiene por defecto un horario diario y si
|noupdated=yes
no incluye el aviso. Realmente hice un mal trabajo documentando esto ya que ni siquiera yo sabía esto sin leer el código. - Trialpears ( charla ) 10:45, 28 de mayo de 2021 (UTC)- Eso es perfecto, Trialpears . Una vez al día es suficiente. Dijiste en el resumen que el nouodate no funciona, pero lo está. Quizás esté mirando la página de la subplantilla, lo que confunde no incluye con incluir solo . Tener la marca de tiempo de actualización en la página de la plantilla y no en la transclusión es perfecto. Salud. - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ( hablar ) 10:56, 28 de mayo de 2021 (UTC)
- Sí, pensé que lo eliminaría por completo, pero usar noinclude es significativamente más inteligente. No creo que haya visto el código desde 2019. - Trialpears ( charla ) 10:59, 28 de mayo de 2021 (UTC)
- Eso es perfecto, Trialpears . Una vez al día es suficiente. Dijiste en el resumen que el nouodate no funciona, pero lo está. Quizás esté mirando la página de la subplantilla, lo que confunde no incluye con incluir solo . Tener la marca de tiempo de actualización en la página de la plantilla y no en la transclusión es perfecto. Salud. - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ( hablar ) 10:56, 28 de mayo de 2021 (UTC)
- Guarapiranga Sin frecuencia tiene por defecto un horario diario y si
- La cosa dentro de las
- Usos reales de {{ template cache }} que no son de portal !? ¡Eso es genial! El bot realmente no hace nada sofisticado y simplemente sustituye la plantilla que se le dio. Si alcanza los límites de la plantilla, obtendrá los mismos problemas que si un usuario normal alcanza los límites de la plantilla. Tampoco estoy seguro de lo fácil que es solucionar el problema de solo inclusión, proviene del bot que verifica las transclusiones de la caché de la plantilla para determinar qué páginas usan la función. Dado que la plantilla no se transcluye en la plantilla principal, si está dentro de includeonly, el bot no la encuentra. Si hay una demanda real para la función, me complace mejorarla. - Trialpears ( charla ) 07:08, 27 de mayo de 2021 (UTC)
- Investigué y solucioné la rotura en la línea 154, que tenía que ver con User: Steel359 / Protection js que tenía un wikitexto que tenía un comentario no cerrado al final y no tiene nada que ver con los límites de la plantilla. Esto significa que probablemente podría volver a 200 filas por página si quisiera. * Pppery * ha comenzado ... 18:21, 28 de mayo de 2021 (UTC)
- 👍 ¡Increíble! Sin embargo, noté que {{ User_scripts_table / 1 }} se rompió en 154 (incluso faltan las dos últimas celdas). ¿También tiene un límite? (Sin embargo, no es problema; puedo cortarlo en trozos de 150 filas en su lugar.) - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ( hablar ) 05:42, 27 de mayo de 2021 (UTC)
- Envolvería una invocación de plantilla alrededor de la tabla original, que le permitiría deshacerse de mw.sting.gmatch (en la línea 20), que es una de las dos funciones que más tiempo consumen en el módulo, principalmente debido a la frecuencia con la que se llama . El módulo lo entendería entonces como la tabla es un montón de parámetros, donde cada señal de tubería separa cada uno de los parámetros. Si mal no recuerdo, ese letrero de tubería debería volver a agregarse, la función gsub existente debería reutilizarse para eso. El módulo también recuperaría el tiempo utilizado por getContent usando ese método, ya que ya no sería necesario. Luego, debe eliminar Module: Redirect o mw.title.new (). Existing. Aunque es una característica agradable, simplemente no hay espacio para ella .-- Snævar ( charla ) 17:27, 26 de mayo de 2021 (UTC)
mw.title.new
no es caro en este caso porque no se llama con un ID de página. Curiosamente,titleObj.redirectTarget
no es caro, por lo que se puede utilizar en lugar de Module: Redirect otitleObj.isRedirect
. Y en lugar de comprobar que la página existe, funciona solo conpcall
la función que obtiene el contenido de la página. Hice estos cambios en el módulo y se las arregla para cargar más líneas de la tabla. - Eru · tuon 19:52, 26 de mayo de 2021 (UTC)- ¡Vaya, esa fue una clase magistral! Gracias. Tus mejoras son bienvenidas, Erutuon . Curiosamente, logré correr hasta 300 filas con ellos una vez, pero cuando fui por más, el sol derritió la cera de mis alas y caí de espaldas a tus 260. Saludos. - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ( hablar ) 00:58, 27 de mayo de 2021 (UTC)
Envolvería una invocación de plantilla alrededor de la tabla original
- Gracias por la sugerencia, Snævar , pero la tabla de origen la genera un bot que no soy de mi propiedad, pero llevaré tu sugerencia a este otro pequeño proyecto . Por supuesto, primero tendré que entender a qué te refieres: ¿te refieres a usar mw.text.gsplit en su lugar? - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ( hablar ) 01:03, 27 de mayo de 2021 (UTC)
el encabezado debería ser manejado por la plantilla en lugar del módulo
- Hecho Sí, tiene mucho más sentido. No entendía cómo podía hacer eso antes. Ahora lo hago. - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ( hablar ) 01:51, 27 de mayo de 2021 (UTC)
- Eso no funciona, ya que el límite de tiempo de Lua de 10 segundos se comparte entre todas las invocaciones. La única forma en la que puedo pensar es mover partes de la tabla a subplantillas actualizadas usando {{ caché de plantilla }} * Pppery * ha comenzado ... 15:18, 26 de mayo de 2021 (UTC)
- Esto necesitaría un cambio en la forma en que se construyó la tabla, ya que el encabezado debería ser manejado por la plantilla en lugar del módulo y el módulo solo devolvería bloques de filas. - Jts1882 | charla 15:08, 26 de mayo de 2021 (UTC)
- Después de toda esa ingeniería de {{ template cache }}, resultó que la solución simple era deshacerse del módulo: Transcluder y usar el getContext () en su lugar. Ya estaba procesando el patrón del extracto después de obtener el contenido, por lo que también podría hacerlo. Ahora el módulo procesa todas las filas (casi 1000) en menos de la mitad del límite de tiempo (4.814 s). El problema con Module: Transcluder es que hace un uso abundante de la biblioteca ustring, que según Johnuniq y el Sr. Stradivarius
es mucho más lenta . Gracias a todos por la ayuda. Todavía hay algo de pulido de patrones para darle forma a las descripciones, si alguien se siente como un cubo de expresiones regulares. - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ( hablar ) 16:39, 31 de mayo de 2021 (UTC)
- No he examinado el módulo: tabla de scripts de usuario, pero noté el código del extracto. Puede que no importe mucho si la mayoría de las páginas son bastante cortas, pero valdría la pena truncar la cadena antes de llamar a gsub para que operen en una cadena más corta. Además, es concebible que algunos de los patrones no codiciosos como
.-}}
puedan ser reemplazados por una variación codiciosa mucho más eficiente como[^}]*}}
. Eso requeriría esperar que el texto omitido no contenga uno}
. Eso solo importa si el texto que se busca es razonablemente largo. Johnuniq ( charla ) 07:39, 1 de junio de 2021 (UTC)- Gracias, Johnuniq . Intenté pre-truncar (así como post-truncar), pero obtuve un poco de galimatías (presumiblemente de wikicode inacabado).
- [^}] * } es más rápido que .- }? Interesante; no sabía eso. He cambiado = + .- = + a = + [^ =] + = + y __.-__ a __ [^ _] + __ , pero, digamos, % [% [% s * [Ii] mage: [^%]] *%]%] ([\ n% []) no funcionó en lugar de % [% [% s * [Ii] mage: .-%]%] ([\ n% []) porque esos enlaces de archivos / imágenes / medios tienen enlaces de enlaces con [] s dentro de ellos. ¿Alguna solución? - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ☎ 08:33, 1 de junio de 2021 (UTC)
- Lo siento, no tengo espacio para pensar en eso en este momento. Re velocidad, todo depende y se requerirán pruebas para determinar si hay alguna diferencia (y no habría diferencia práctica en cadenas cortas). Supongo que eso
.-}}
requeriría que Lua tomara el siguiente carácter (.
) y luego verificara si los siguientes dos caracteres coinciden}}
. Luego repita para cada carácter siguiente hasta encontrar una coincidencia o el final de la cadena. Sin embargo,[^}]*}}
probablemente los bucles agregan caracteres que no son llaves derechas[^}]
hasta que llega a una llave o al final de la cadena, y luego verifica si}}
sigue. Johnuniq ( charla ) 09:54, 1 de junio de 2021 (UTC)- Si .-x y [^ x] * x son matemáticamente equivalentes, ¿no utilizaría la máquina de coincidencia de patrones el mismo algoritmo para ambos, el que sea más eficiente? - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ☎ 12:15, 4 de junio de 2021 (UTC)
- Algunos motores de expresión regular pueden optimizar este tipo de cosas, pero los
string
patrones de Lua son bastante minimalistas y básicamente se ejecutan como un conjunto de instrucciones sin mucha transformación. FWIW aquí está el código que maneja el-
operador de repetición para losstring
patrones. - Eru · tuon 22:30, 4 de junio de 2021 (UTC)- Gracias, Erutuon . Hice los cambios recomendados por Johnuniq ; de hecho, redujo el tiempo de procesamiento en aproximadamente un tercio. Sin embargo, la expresión regular es tirar al bebé con el agua del baño (ya fue antes de los cambios de hoy; mire la fila de entrada de la tabla superior, por ejemplo). Probé la desactivación de varios gsubs pero no pude averiguar cuál era el culpable. - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ☎ 06:52 , 8 de junio de 2021 (UTC)
- @ Guarapiranga : FWIW, los únicos elementos en el informe del perfil de Lua (que se pueden imprimir en la consola de JavaScript con este código en su common.js ) que tienen más de 1 segundo son
? 2880 ms 47 .1% Scribunto_LuaSandboxCallback :: redirectTarget 2360 ms 38 .6%
?
es un comodín para cualquier función de la que Lua no pudo obtener el nombre (como una función anónima), perostring.gsub
no está en la lista (estaba a 40 ms antes de mi edición reciente), así que si no está incluida,?
entonces está no es el problema. Eso tendría sentido para mí porque generalmente lo he encontrado muy rápido para procesar grandes cantidades de texto. - Eru · tuon 21:15, 8 de junio de 2021 (UTC)- Gracias, Erutuon . No quise decir que los gsubs estuvieran afectando la actuación, sino que eran demasiado codiciosos y tiraban demasiado texto. Su último cambio solucionó eso, incluida una de las entradas en la tabla que lo estaba rompiendo. Ya no lo es. Gracias de nuevo. - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ☎ 21:45, 8 de junio de 2021 (UTC)
- @ Erutuon : agregué su código a mi common.js , pero no puedo encontrar su efecto. ¿Debería ver los datos de NewPP en la parte inferior de la página analizada? Además, ¿podría ese código agregar una barra de progreso junto a los datos x / y en el informe de límite de NewPP? Salud. - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ☎ 00:59, 16 de junio de 2021 (UTC)
- @ Guarapiranga : Lo verá si abre la consola de JavaScript. En Windows, eso se hace con Ctrl + Shift + K (Firefox) o Ctrl + Shift + J (Chrome). La consola es principalmente texto sin formato, por lo que no estoy seguro de que sea posible hacer una barra de progreso en ella. - Eru · tuon 20:22, 16 de junio de 2021 (UTC)
- ¡Ah, ya veo! ¿Eso es para encontrarlo más fácil que en la ventana de la fuente? En cuanto al texto plano ... Estás mostrando tu juventud Erutuon ; Claramente no eres de la época del arte DOS y ASCII 😀 Saludos. - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ☎ 22:03, 16 de junio de 2021 (UTC)
- Es cierto ... y acabo de recordar que wget y otros programas de terminal tienen indicadores de progreso. La ventaja de la consola de JavaScript es que no tiene que obtener una vista previa de la página (lo que puede llevar mucho tiempo). Una mesa en algún lugar de la página sería aún mejor, pero no quería tener que descifrar el diseño de la misma. - Eru · tuon 22:32, 16 de junio de 2021 (UTC)
- ¡Ah, ya veo! ¿Eso es para encontrarlo más fácil que en la ventana de la fuente? En cuanto al texto plano ... Estás mostrando tu juventud Erutuon ; Claramente no eres de la época del arte DOS y ASCII 😀 Saludos. - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ☎ 22:03, 16 de junio de 2021 (UTC)
- @ Guarapiranga : Lo verá si abre la consola de JavaScript. En Windows, eso se hace con Ctrl + Shift + K (Firefox) o Ctrl + Shift + J (Chrome). La consola es principalmente texto sin formato, por lo que no estoy seguro de que sea posible hacer una barra de progreso en ella. - Eru · tuon 20:22, 16 de junio de 2021 (UTC)
- @ Guarapiranga : FWIW, los únicos elementos en el informe del perfil de Lua (que se pueden imprimir en la consola de JavaScript con este código en su common.js ) que tienen más de 1 segundo son
- Gracias, Erutuon . Hice los cambios recomendados por Johnuniq ; de hecho, redujo el tiempo de procesamiento en aproximadamente un tercio. Sin embargo, la expresión regular es tirar al bebé con el agua del baño (ya fue antes de los cambios de hoy; mire la fila de entrada de la tabla superior, por ejemplo). Probé la desactivación de varios gsubs pero no pude averiguar cuál era el culpable. - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ☎ 06:52 , 8 de junio de 2021 (UTC)
- Algunos motores de expresión regular pueden optimizar este tipo de cosas, pero los
- Si .-x y [^ x] * x son matemáticamente equivalentes, ¿no utilizaría la máquina de coincidencia de patrones el mismo algoritmo para ambos, el que sea más eficiente? - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ☎ 12:15, 4 de junio de 2021 (UTC)
- Lo siento, no tengo espacio para pensar en eso en este momento. Re velocidad, todo depende y se requerirán pruebas para determinar si hay alguna diferencia (y no habría diferencia práctica en cadenas cortas). Supongo que eso
- No he examinado el módulo: tabla de scripts de usuario, pero noté el código del extracto. Puede que no importe mucho si la mayoría de las páginas son bastante cortas, pero valdría la pena truncar la cadena antes de llamar a gsub para que operen en una cadena más corta. Además, es concebible que algunos de los patrones no codiciosos como
La cursiva no funciona con títulos que tienen desambiguación entre paréntesis
{{ Italic dab }} a través del módulo: el título en cursiva no funciona en títulos que tienen desambiguación entre paréntesis, como The Ghost Talks (Randall y Hopkirk (fallecido)) . En este ejemplo, "Randall y Hopkirk (fallecido)" es toda la desambiguación.
Por lo que puedo decir, la lógica se encuentra en la línea 82-85: prefix, parentheses = mw.ustring.match( title.text, '^(.+) %(([^%(%)]+)%)$' )
he hecho todo lo posible, pero no puedo encontrar el patrón correcto para solucionar este problema. ¿Alguien puede ayudarme con esto? Gonnym ( charla ) 13:07, 26 de mayo de 2021 (UTC)
- Podrías probar un patrón como
'^(.-) %((.+)%)$'
. Sin embargo, como esto es más simple que el original, sospecho que puede romper algunos casos de uso que el autor original pensó y yo pasé por alto. Certes ( charla ) 14:03, 26 de mayo de 2021 (UTC)- No lo he probado, pero apuesto a que coincidiría, por ejemplo, con "(B) (C)" en "A (B) (C)", que no creo que sea deseable. OTOH, si hicimos que la última captura no sea codiciosa, solo puede coincidir con "Difunto)". Quizás deberíamos simplemente instruir a los editores para que especifiquen manualmente la parte para poner en cursiva en DISPLAYTITLE en casos como este. Nardog ( charla ) 14:21, 26 de mayo de 2021 (UTC)
- Pero se
[[A (B) (C)|]]
convierte en " A ", así que tal vez esto no sea tan malo. Nardog ( charla ) 14:24, 26 de mayo de 2021 (UTC)
- Otra maquinaria y de lua
%b
funciona, a pesar de que captura los paréntesis:"^(.+) (%b())$"
. Luego se pueden eliminar conparentheses = parentheses:sub(2, -2)
. - Eru · tuon 03:01, 27 de mayo de 2021 (UTC)- @ Erutuon : ¡ eso funciona muy bien! ¡Gracias! - Gonnym ( conversación ) 13:47, 27 de mayo de 2021 (UTC)
Error de Lua: no hay suficiente memoria.
¿Alguna guía relacionada con la resolución de "Error de Lua: no hay suficiente memoria" en la página de la pandemia COVID-19 en la India ? El error comenzó desde esta edición el 24 de mayo de 2021 y actualmente aparece después de la cita 59. Cada transclusión, plantilla utilizada parece estar causando el error desde ese punto en adelante. (También se ve lo mismo en la categoría de bienes comunes para el mismo artículo "Categoría: pandemia de COVID-19 en la India") DTM ( charla ) 15:34, 26 de mayo de 2021 (UTC)
- Remover
{{Update|date=April 2021}}
fue la causa de todos esos errores de Lua. Lo he devuelto y se han ido. No tengo idea de por qué ocurre el error, pero creo que una plantilla innecesaria es mejor que todos los errores mientras intentamos resolverlo. - Jts1882 | charla 16:26, 26 de mayo de 2021 (UTC)- Jts1882 , gracias por la corrección (hack / jugaad ) por ahora. DTM ( conversación ) 08:31, 27 de mayo de 2021 (UTC)
frame: callParserFunction ('# tiempo', 'j M y', frame: callParserFunction ('REVISIONTIMESTAMP', página ))
¿Hay una mejor manera de escribir eso con funciones nativas de Lua, en lugar de analizador,? - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ( hablar ) 08:12, 27 de mayo de 2021 (UTC)
- No lo creo. Podrías encontrar una alternativa al #tiempo pero sería feo. Sin embargo, REVISIONTIMESTAMP requiere llamar a la función del analizador y no creo que haya ninguna alternativa al marco: callParserFunction. Tiene una sobrecarga baja, por lo que no me preocuparía por eso. Johnuniq ( charla ) 04:01, 28 de mayo de 2021 (UTC)
- La versión lua de time es mw.language (): formatnum (). Puede usar mw.language.getContentLanguage (): formatnum () para usar el idioma de la wikipedia en cuestión, aquí está en inglés. O puede hacer mw.language.new (languagecode): formatnum () para un idioma específico. No existe una alternativa lua pura para la marca de tiempo de revisión .-- Snævar ( charla ) 20:41, 1 de junio de 2021 (UTC)
Necesita ayuda con el módulo: coordenadas
Tengo un problema con este módulo en bnwiki. En resumen: los enlaces entre idiomas se moverán a la parte superior de la página . Si no hacemos nada, se romperán las coordenadas que se muestran en bnwiki. El desarrollador de MW recomendó usar la extensión del indicador . Entonces, apliqué esto a bnwiki, soluciona el problema. Pero me encuentro con el siguiente problema: la coord2text
función dejó de funcionar display=title
(funciona con display=title,inline
o display=inline
pero no con display=title
). coord2text
debe extraer la longitud y la latitud de la plantilla de coordenadas. No debería mostrar coordenadas en la parte superior de la página. Pero ahora mismo en bnwiki:
{{#invoke:স্থানাঙ্ক/খেলাঘর|coord2text|{{Coord|57|18|22|N|4|27|32|E|display=title}}|lat}}
no da nada y muestra las coordenadas en la parte superior de la página{{#invoke:স্থানাঙ্ক/খেলাঘর|coord2text|{{Coord|57|18|22|N|4|27|32|E|display=inline,title}}|lat}}
da57.30611
y muestra coordenadas en la parte superior de la página
Ambos ejemplos deberían dar 57.30611
y no deberían mostrar coordenadas en la parte superior de la página. Encontré un problema similar con bn: মডিউল: অবস্থান_মানচিত্র / খেলাঘর # L-165 (Módulo: Mapa de ubicación, casos de prueba ).
Consulte también bn: ব্যবহারকারী_আলাপ: Johnuniq # 2021 . ¿Alguien puede ayudar? No dude en editar bn: মডিউল: স্থানাঙ্ক / খেলাঘর . página de prueba . - আফতাবুজ্জামান ( conversación ) 21:56, 6 de junio de 2021 (UTC)
- Coord2text tiene documentación (texto explicativo) que dice que solo toma una dirección a la vez, por lo tanto, longitud o latitud, no ambas. Entonces, eso está funcionando según lo previsto. Se supone que debe llamar a coord2text dos veces, una para la latitud y otra para la longitud. En cuanto al otro problema, ¿por qué no simplemente display = inline, eso funciona, por qué necesita especificar display = title o display = inline, title? - Snævar ( charla ) 06:46, 7 de junio de 2021 (UTC)
- আফতাবুজ্জামান sabría sobre lat / long, pero estoy de acuerdo en que debe haber una explicación de dónde se usaría la solicitud. ¿Por qué necesitarías extraer la latitud o la longitud de {{coord}} con display = title? Johnuniq ( charla ) 09:03, 7 de junio de 2021 (UTC)
Esto se refiere a mw: Ayuda: indicadores de estado de la página . La característica interesante es que el wikitexto afecta la visualización sin estar presente en la página final (como referencias). La vista previa de cualquiera de las siguientes líneas en una caja de arena muestra que tienen un efecto aunque la invocación genera solo un número, por lo que el wikitexto original no está presente en la página renderizada.
{{#invoke: string | len | Hola }}{{#invoke: string | len |Hola }}
Para la primera línea, se muestra una referencia y la invocación muestra 31 (la longitud del marcador de tira de referencia ). Para la segunda línea, se muestra "Hola" en la parte superior de la página en el área indicadora y se muestra 37 (la longitud del marcador de la tira indicadora). Con respecto a la publicación original, el problema es que {{coord2text}} recibe solo un marcador de tira cuando se usa display = title. Actualmente, enwiki no usa el método indicador y lo siguiente muestra que se devuelve mucho más que un marcador de banda.
{{#invoke:string|len|{{Coord|57|18|22|N|4|27|32|E|display=title}}}}
→ 794
El número que se muestra actualmente es 794 porque enwiki {{ coord }} genera 794 caracteres que incluyen la latitud y la longitud que se mostrarán en la parte superior de la página. Johnuniq ( charla ) 09:03, 7 de junio de 2021 (UTC)
- @ আফতাবুজ্জামান , @ Johnuniq , @ Snævar , no sé si está relacionado con su problema de todos modos, pero mire cómo se editó un módulo en la Wikipedia coreana. SGrabarczuk (WMF) ( charla ) 11:30, 7 de junio de 2021 (UTC)
- SGrabarczuk (WMF) , Gracias pero no funciona. @ Johnuniq , @ Snævar , lo necesito principalmente para bn: Módulo: অবস্থান মানচিত্র # L-164 (Módulo: Mapa de ubicación). Ambos módulos usan la misma expresión regular para coord2text, así que pensé que si uno se arregla, podría aplicarlo al otro. Para un caso de uso, considere este ejemplo, cópielo y obtenga una vista previa en cualquier lugar:
{{Location map| Iraq | coordinates = {{coord|36|20|00|N|43|24|00|E|format=dms|display=title}} }}
(funciona aquí). Ahora obtenga una vista previa del mismo código en cualquier lugar de bnwiki (tenemos redirecciones, no se preocupe por el nombre en inglés en la plantilla). El resultado es que no funciona. ejemplo en vivo (ver abajo a la derecha, se supone que hay un mapa). - আফতাবুজ্জামান ( conversación ) 19:28, 7 de junio de 2021 (UTC)- Dejé un largo pensamiento en bn: Charla de usuario: problema Johnuniq # 2021 . Johnuniq ( charla ) 00:41, 8 de junio de 2021 (UTC)
- SGrabarczuk (WMF) , Gracias pero no funciona. @ Johnuniq , @ Snævar , lo necesito principalmente para bn: Módulo: অবস্থান মানচিত্র # L-164 (Módulo: Mapa de ubicación). Ambos módulos usan la misma expresión regular para coord2text, así que pensé que si uno se arregla, podría aplicarlo al otro. Para un caso de uso, considere este ejemplo, cópielo y obtenga una vista previa en cualquier lugar:
¿Por qué no puedo pasar esta cadena como argumento?
- Manzanas: 1,000,000
- Plátanos: 2,000,000
- Albaricoques: 1.440.000
- Peras: 640.000
- Piñas: 750.000
Los argumentos parecen llegar bien a la función:
gráfico: gráfico circular
nombre de página: Usuario: Guarapiranga / sandbox / 5mesa: datos: (1000000: manzanas)
(2000000: Plátanos) (1440000: Albaricoques) (6.4e5: Peras) (750,000: Piñas).
Y funciona cuando el argumento se llama explícitamente: Especial: Permalink / 1028302707
- 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ☎ 05:10, 13 de junio de 2021 (UTC)
- Es porque Plantilla: gráfico de tabla inserta espacios antes y después de los parámetros 1, 2 y 3. Eso significa que el módulo recibe "
pie chart
" como parámetro 1. Johnuniq ( hablar ) 07:00, 13 de junio de 2021 (UTC)- ¡Derecha! Nunca sé cuándo se cuentan esos espacios y cuándo no en el lenguaje de la plantilla.
- 👍 Gracias, Johnuniq . - 𝐆𝐮𝐚𝐫𝐚𝐩𝐢𝐫𝐚𝐧𝐠𝐚 ☎ 08:03, 13 de junio de 2021 (UTC)