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!".
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)".
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.
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.