Viquipèdia:Lua

De Viquipèdia
Dreceres ràpides: navegació, cerca

Lua és un llenguatge de programació disponible a la Viquipèdia amb l'extensió del MediaWiki Scribunto. El codi Lua es pot incrustar en plantilles wiki utilitzant la funcionalitat "{{#invoke:}}" de l'extensió Scribunto.

El codi font de Lua es desa en pàgines anomenades mòduls (p.ex. Mòdul:Demo). Aquests mòduls individuals són invocats en pàgines de plantilles. Per exemple, Mòdul:Demo/ús utilitza el codi {{#invoke:Demo|hola}} mostrant el text "Hola, món!".

Què és Lua[modifica | modifica el codi]

Presentació en pdf sobre com convertir una plantilla amb text wiki a un mòdul Lua.

Lua és un llenguatge script que es pot utilitzar per analitzar dades, calcular expressions i formatar els resultats utilitzant funcions o programació orientada a objectes. Encara que alguns scripts Lua es poden mantenir simples, per entendre'ls millor, Lua permet estructures complexes que poden ser un repte per a experts informàtics, amb taules, funcions dinàmiques i agrupacions associatives. Lua també suporta recursivitat de funcions o permet corutines per multitasques cooperatives. Cal procurar d'evitar excessiva complexitat perquè altres usuaris no entendrien com mantenir un mòdul Lua. A continuació es mostra un exemple de codi font Lua per a una funció factorial:

  function factorial(n)
    if n == 0 then
      return 1 --retorna el resultat 1 quan es passa zero
    else
      return n * factorial(n - 1)
    end
  end
  for index = 1,5 do
      print(index, "n! = ", factorial(index) )
  end

Una mostra de codi Lua es pot ressaltar amb l'etiqueta "<source lang="lua">...</source>". Per a exemples més complexos vegeu l'article en anglès "Lua (programming language)".

Espai de noms Module[modifica | modifica el codi]

Lua amb Scribunto s'utilitza a la Viquipèdia en l'espai de noms Mòdul (en anglès Module, també vàlid). Per la seva organització se segueixen algunes convencions.

Igual que amb les plantilles, la documentació d'ús s'inclou en la subpàgina /ús. Aquesta documentació és incrustada al principi de la seva pàgina principal. Per exemple, Mòdul:Demo mostra primer el contingut de Mòdul:Demo/ús i a continuació el propi codi.

Les pàgines en l'espai Mòdul tenen un editor de codi "Ace" escrit amb JavaScript. Són una excepció les subpàgines /ús que són tractades com a text wiki, així com l'espai "Mòdul Discussió". L'editor Ace proporciona sagnat automàtic i marcatge de sintaxi. No és possible reanomenar pàgines de codi Lua a altres de text wiki, o a l'inrevés.

Proves de mòduls[modifica | modifica el codi]

Per fer proves unitàries es disposa del Mòdul:UnitTests. Permet executar el vostre script amb una sèrie de casos de prova i comprovar que es produeix el resultat esperat. Per convenció, l'entorn de tests és en subpàgines /tests i s'executa en la pàgina de discussió corresponent. Per exemple, Mòdul:Demo disposa de Mòdul:Demo/tests amb el resultat mostrat a Mòdul Discussió:Demo/tests.

Per fer proves amb nous mòduls és recomanable seguir l'estructura "Mòdul:Proves/Nom d'usuari/Nom del mòdul". Així, totes les proves són subpàgines de "Mòdul:Proves" i totes les proves d'un mateix usuari són subpàgines de "Mòdul:Proves/Nom d'usuari".

Per fer canvis en mòduls existents, és recomanable provar-ho abans. Un mòdul pot ser usat per diferents plantilles que alhora poden estar incloses en diferents pàgines augmentant el nombre total de pàgines que poden estar afectades en cada modificació. Es poden seguir les mateixes indicacions de Viquipèdia:Proves de plantilles. Amb la pàgina Especial:TemplateSandbox es poden provar diferents pàgines substituint tant plantilles com mòduls per aquells que existeixin en el vostre espai personal de proves.

Vegeu també[modifica | modifica el codi]