Wikipedia:Lua

Från Wikipedia
Hoppa till: navigering, sök
Namnrymder
Innehållsnamnrymder Diskussionsnamnrymder
0  (Huvudnamnrymden)  Diskussion 1
2 Användare Användardiskussion 3
4 Wikipedia Wikipediadiskussion 5
6 Fil Fildiskussion 7
8 MediaWiki MediaWiki-diskussion 9
10 Mall Malldiskussion 11
12 Hjälp Hjälpdiskussion 13
14 Kategori Kategoridiskussion 15
100 Portal Portaldiskussion 101
446 Utbildningsprogram  Utbildningsprogramsdiskussion  447
 828  Modul Moduldiskussion  829 
Virtuella namnrymder
-1 Special
-2 Media

Lua är ett programspråk som nu finns tillgänglig via programtillägget Scribunto i MediaWiki på svenskspråkiga Wikipedia. Luakod kan nu bäddas in Wikipedia-mallar genom att använda "{{#invoke:}}".

Lua(käll)koden lagras i sidor som kallas moduler som ligger i namnrymden Modul (t ex Modul:Sgd). En Lua-modul anropas normalt från en mallsida med {{#invoke:}}, t ex {{#invoke:Sgd|sgd|a=66|b=12}}.

Projekt[redigera | redigera wikitext]

Huvudsyftet med detta projekt är att hjälpa dem som vill koda en Lua-modul för Wikipedia, genom att ge tips, riktlinjer och kontakter med andra som kodar Lua-moduler.

Lua i Wikipedia[redigera | redigera wikitext]

Ett Hello World exempel är Modul:HelloWorld:

mitt_objekt = {}; -- Alla Lua moduler i Wikipedia måste börja med att definiera en variabel som har deras
                  -- externt tillgängliga funktioner. De kan ha valfria namn och kan även innehålla data.
 
mitt_objekt.hej = function( frame )  -- Lägg till en funktion till variabeln. Dessa går att anropa från 
                                     -- Wikipedia med #invoke. "frame" innehåller datat som Wikipedia 
                                     -- skickar till denna funktion när den anropas.
 
    local str = "Hello World!"  -- Deklarera en lokal variabel och ge den data. 
 
    return str  -- Avsluta denna funktion och skicka datat i "str" tillbaka till Wikipedia.
                -- "print" funktionen är inte tillåten, så all utmatning görs genom att skicka
                -- tillbaka data på detta sätt.
 
end  -- Slut på funktionen.
 
return mitt_objekt  -- Alla moduler avslutas med att skicka tillbaka variabeln med dess funktioner
                    -- till Wikipedia.
 
-- Vi kan nu använda denna modul med {{#invoke: HelloWorld | hej }}.
-- #invoke kommandot börjar med modulens namn, i detta fall "HelloWorld",
-- sedan följer ett av modulens funktioner, i detta fall "hej".

För en mer detaljerad beskrivning om hur man använder Lua i Wikipedia, se mw:Extension:Scribunto/Lua reference manual (engelska).

Lägg till mallen {{Lua}} längst upp på diskussionssidan för alla mallar som använder Lua. Detta för att hjälpa de som inte känner till Lua och underlätta för projektet att få en översyn. Mallen ser ut så här:

Begränsningar av Lua i Wikipedia[redigera | redigera wikitext]

  • Lua-koden körs endast när en sida tolkas (dvs när en sida sparas, förhandsgranskas, etc) och Lua kan endast få indata som textsträngar, skickade med {{#invoke:}} och som går att hämta från frame:expandTemplate, frame:preprocess, osv.
  • Den wikitext som skickas ut från Lua efterbearbetas inte, så mallar och all annan transkludering sker inte utan texten kommer att visas som den är.
  • Länkar av typen [[Wikipedia:Hjälp|]] fungerar inte som utdata från Lua - de måste skrivas explicit som [[Wikipedia:Hjälp|Hjälp]].
  • Ingen annan behandling av innehållet, t ex att ersätta ~~~~ med signaturer sker heller.
  • Luakoden på en sida är begränsad till max 10 sekunder CPU-tid i servern.

Din sandlåda[redigera | redigera wikitext]

Ifall man vill byta ut wikikod mot Lua i en befintlig mall är det lämpligt att först prova sig fram i en personlig "sandlåda". Den skapar du enligt detta format (ersätt texten mellan < > med lämplig text).

Modul:Sandlådan/<Ditt användarnamn>/<Namnet på din modul>

Använd Special:PrefixIndex/Modul:Sandlådan för att lista all Lua-kod i alla sandlådor.

Modul för att hantera testfall för Lua-moduler/funktioner[redigera | redigera wikitext]

För att underlätta testande av komplexa Lua-funktioner, och speciellt verifiera att sådant som tidigare fungerat även gör det efter att ändringar och tillägg förts in i modulerna så kan man använda Modul:UnitTests som är importerad från enwp. Testfallen dokumenteras på en undersida, /testcases, till den modul som testas och resultatet visas i tabellform på undersidans diskussionssida.

Deltagare[redigera | redigera wikitext]

Som med de flesta andra projekt som finns det ett antal personer som engagerar sig i det. Alla är mycket välkomna att delta precis hur mycket de vill, utan att man måste skriva upp sig någonstans för den sakens skull – många på Wikipedia föredrar att inte göra det. Om man vill, så går det dock att markera sin närvaro nedan, så finns det några man kan vända sig om man specifikt vill kontakta användare om projektet.

Se även[redigera | redigera wikitext]