Wikipedia:Lua

Fra Wikipedia, den frie encyklopedi
Gå til: navigasjon, søk
Wikipedia-navnerom
Grunnleggende
navnerom
Tilhørende
diskusjonsnavnerom
0 (Hoved) Diskusjon 1
2 Bruker Brukerdiskusjon 3
4 Wikipedia Wikipedia-diskusjon 5
6 Fil Fildiskusjon 7
8 MediaWiki MediaWiki-diskusjon 9
10 Mal Maldiskusjon 11
12 Hjelp Hjelpdiskusjon 13
14 Kategori Kategoridiskusjon 15
100 Portal Portaldiskusjon 101
828 Modul Moduldiskusjon 829
Virtuelle navnerom
-1 Spesial
-2 Media

Lua er et programmeringsspråk som nå er tilgjengelig på Wikipedia på norsk bokmål og riksmål via programtillegget Scribunto i MediaWiki. Luakode kan nå bakes inn i Wikipedia-maler ved å bruke «{{#invoke:}}»-funksjonen.

Lua(kilde)koden lagres i sider som kalles moduler, som ligger i navnerommet Modul (for eksempel Modul:Lua banner). En Lua-modul kalles normalt fra en malside ved fjelp av en {{#invoke:}}-funksjon, for eksempel {{#invoke:Lua banner|main}}.

Prosjekt[rediger | rediger kilde]

Hovedformålet med dette prosjektet er å hjelpe de som vil kode en Lua-modul for Wikipedia, ved å gi tips, retningslinjer og kontakter med andre som koder Lua-moduler.

Lua i Wikipedia[rediger | rediger kilde]

Et Hello World-eksempel er Modul:HelloWorld:

mitt_objekt = {}; -- Alle Lua-moduler i Wikipedia må begynne med å definere en variabel som har
                  -- eksternt tilgjengelige funksjoner. De kan ha valgfrie navn og kan også inneholde data.
 
mitt_objekt.hei = function( frame )  -- Legg til en funksjon til variabelen. Disse er mulige å kalle fra
                                     -- Wikipedia med #invoke. «frame» inneholder dataen som Wikipedia
                                     -- sender til denne funksjonen når den kalles.
 
    local str = "Hello World!"  -- Angi en lokal variabel, og gi den data.
 
    return str  -- Avslutt denne funksjonen og send data i «str» tilbake til Wikipedia. Wikipedia.
                -- «print»-funksjonen er ikke tillatt, så utskriving gjøres ved å sende
                -- data tilbake på denne måten.
 
end  -- Slutten på funktionen.
 
return mitt_objekt  -- Alle moduler avsluttes med å sende variabelen tilbake med disse funksjonene
                    -- til Wikipedia.
 
-- Vi kan nå bruke denne modulen med {{#invoke: HelloWorld | hei }}.
-- #invoke-kommandoen begynner med modulens navn, i dette tilfellet «HelloWorld»,
-- deretter følger en av modulens funksjoner, i dette tilfellet «hei».

For en mer detaljert beskrivelse om bruk av Lua på Wikipedia, se mw:Extension:Scribunto/Lua reference manual (engelsk).

Legg til malen {{Lua}} lengst opp på malsiden for alle maler som bruker Lua. Dette for å hjelpe de som ikke kjenner til Lua, og får å få en oversikt over hvilke maler som bruker Lua. Malen brukes slik: {{Lua|Modul:Modulnavn}}. For eksempel ser {{Lua|Modul:HelloWorld}} slik ut (på høyre side):

Lua-begrensninger i Wikipedia[rediger | rediger kilde]

  • Lua-koden kjøres bare når en side tolkes – det vil si når en side lagres, forhåndsvises, etc. – og Lua kan bare få inndata som tekststrenger sendt med {{#invoke:}} og som er mulig å hente fra frame.expandTemplate, frame.preprocess, osv.
  • Den wikiteksten som sendes ut fra Lua blir ikke bearbeidet, så i maler og all annen transkludering vil teksten vises som den er.
  • Lenker av typen [[Wikipedia:Hjelp|]] fungerer ikke som utdata fra Lua – de må skrives eksplisitt som [[Wikipedia:Hjelp|Hjelp]].
  • Det er heller ingen annen behandling av innholdet, for eksempel å erstatte ~~~~ med signaturer.
  • Lua-koden på en side er begrenset til maks 10 sekunder CPU-tid på serveren.

Din sandkasse[rediger | rediger kilde]

Hvis man ønsker å bytte ut wikikoden med Lua i en mye brukt mal, kan det være en fordel å prøve seg frem i en egen «sandkasse». Denne oppretter du på dette formatet (ersatt teksten mellom < > med passende tekst).

Modul:Sandkasse/<Ditt brukernavn>/<Navnet på din modul>

Bruk Special:Prefiksindeks/Modul:Sandkasse for en liste over ale Lua-koder i alle sandkasser.

Modul for å håndtere testtilfeller for Lua-moduler/funksjoner[rediger | rediger kilde]

For å støtte testingen av komplekse Lua-funksjoner, og spesielt verifisere at det som tidligere fungerte fortsatt gjør det etter at endringer og tillegg er lagt inn i modulen, kan man bruke Modul:UnitTests som er importert fra en:wp. Testtilfellene dokumenteres på en underside, /testtilfeller, til den modulen som testes. Resultatene vises i tabellform på undersidens diskusjonsside.

Se også[rediger | rediger kilde]