Lua es un lenguaje de programación disponible en Wiksource con la extensión de MediaWiki Scribunto. El código Lua se puede incrustar en plantillas wiki utilizando la funcionalidad «{{#invoke:}}» de la extensión Scribunto.

El código fuente de Lua se guarda en páginas llamadas módulos (p.ej. Módulo:Demo). Estos módulos individuales son invocados en páginas de plantillas. Por ejemplo, Módulo:Demo/doc utiliza el código {{#invoke:Demo|hola}} mostrando el texto «¡Hola, mundo!».

¿Qué es Lua?

editar
 
Presentación en pdf sobre cómo convertir una plantilla con texto wiki a un módulo Lua.

Lua es un lenguaje script que se puede utilizar para analizar datos, calcular expresiones y formatear los resultados utilizando funciones o programación orientada a objetos. Aunque algunos scripts Lua se pueden mantener simples, para que sean entendidos mejor, Lua permite estructuras complejas, que pueden ser un reto para expertos informáticos, con tablas, funciones dinámicas y matrices (Array). Lua también soporta recursividad de funciones o permite corutines por multitareas cooperativas.

Hay que procurar evitar hacer los módulos demasiado complejos para que los usuarios menos expertos los entiendan y puedan participar en su mantenimiento. A continuación se muestra un ejemplo de código fuente Lua con una función factorial:

  function factorial(n)
    if n == 0 then
      return 1 --devuelve el resultado 1 cuando se pasa cero
    else
      return n * factorial(n - 1)
    end
  end
  for index = 1,5 do
      print(index, "n! = ", factorial(index) )
  end

Espacio de nombres

editar

Los módulos Lua con la extensión Scribunto utiliza en la Wikisource el espacio de nombres Módulo. Por su organización se siguen algunas convenciones.

Al igual que con las plantillas, la documentación de uso se incluye en la subpágina/doc. Esta documentación está incrustada al principio de su página principal. Por ejemplo, Módulo:Demo muestra primero el contenido de Módulo:Demo/doc y a continuación el propio código.

Las páginas en el espacio Módulo tienen un editor de código «Ace», escrito con JavaScript. Son una excepción las subpáginas/doc que son tratadas como texto wiki, así como el espacio «Módulo discusión». El editor Ace proporciona sangrado automático y marcaje de sintaxis. No es posible renombrar páginas de código Lua a otros de texto wiki, o viceversa.

Véase también

editar