Help:Lua
Door middel van lua kunnen scripts aan Wikipedia toegevoegd worden. Scripts worden door middel van de parserfunctie {{#invoke:}} vanuit sjablonen ingevoegd. In MediaWiki wordt hiervoor gebruik gemaakt van mw:Extension:Scribunto.
Gebruik
[bewerken | brontekst bewerken]In een sjabloon wordt een module als volgt aangeroepen:
{{#invoke: Modulenaam | functienaam | parameter1 | parameter 2 | naam=waarde | ...}}
Parameters zijn optioneel en hoeven geen naam te hebben.
- Parameters met data die uit de sjabloonaanroep komt, moet altijd een naam hebben om fouten te voorkomen als de data een "="-teken bevat.
- Op het moment van de moduleaanroep heeft de parser sjablonen en parserfuncties zoals {{code|}} al uitgevoerd. Als dus een van de moduleparameters het sjabloon <nowiki>{{!}} bevat, ontvangt de module niet de tekst van het sjabloon, maar de output ervan, dus in dit geval het "|"-teken.
- Daardoor kan de output van een module ook geen sjabloon-aanroepen bevatten, omdat de parser die niet zal verwerken en dus ongewijzigd zal invoegen.
- Meerdere aanroepen van #invoke op dezelfde pagina worden onafhankelijk van elkaar uitgevoerd. Het is dus niet mogelijk data van de eerste aanroep te bewaren voor de volgende aanroep.
- De maximale tijd voor alle lua functies samen op een pagina bedraagt 10 seconden.
- De limiet van 500 "dure" parserfuncties (zoals het controleren of een pagina bestaat), is ook voor modules van toepassing. Zie ook Wikipedia:Sjablonen#Technische_beperkingen.
Aanmaken en bewerken
[bewerken | brontekst bewerken]Bij het bewerken van een module wordt een speciale codeeditor getoond die syntax-highlighting doet en fouten en waarschuwingen toont. Onderaan de pagina is een debugvenster zichtbaar waarin lua code ingevoerd kan worden om het resultaat te zien.
Voorbeelden
[bewerken | brontekst bewerken]- Module:Zandbak is bedoelt om mee te experimenteren. Er kunnen daar ook subpagina's aangemaakt worden om uitgebreider te kunnen testen.
- Module:Voorbeeld bevat een voorbeeld van een werkende module. Dit is alleen bedoelt als voorbeeld, niet om mee te experimenteren.
Unittesten
[bewerken | brontekst bewerken]De Module:UnitTests kan gebruikt worden om testcases te definiëren die uitgevoerd kunnen worden om te valideren of de functies van een module nog steeds zo werken als bedoeld. Bij toekomstige aanpassingen kunnen fouten gemaakt worden waardoor de werking niet meer goed is. Tijdens het bewerken van een module kunnen met "Voorvertoning weergeven met dit sjabloon" de unittests uitgevoerd worden, zodat fouten al opgespoord worden voordat de wijzigingen opgeslagen worden. Als een testcase als fout gemarkeerd wordt, kan dat ook betekenen dat er een fout in de testcase zelf zit.
Hernoemen van modules
[bewerken | brontekst bewerken]Als een module hernoemd wordt, krijgt de oude pagina een speciale inhoud waardoor de module ook nog onder de oude naam beschikbaar is;
return require [[Module:NieuweNaam]]
Weergeven van code
[bewerken | brontekst bewerken]- Het tonen van lua op overlegpagina's kan door middel van
<syntaxhighlight lang="lua"> ... </syntaxhighlight> - De inhoud van een complete module kan ingevoegd worden dmv
{{#tag:syntaxhighlight |{{Module:Voorbeeld}}| lang=lua}}
Combineren met sjablonen
[bewerken | brontekst bewerken]De output van een sjabloon kan als input-parameter van een module gebruikt worden en omgekeerd. Bijvoorbeeld
{{#invoke:String|len|{{trim|abc}}}}→ 3{{Isgetal|{{#invoke:String|sub|123}}}}→ 1
De in deze voorbeelden gebruikte sjablonen en module-aanroepen zijn:
- De functie sub uit Module:String retourneert de eerste parameter als de tweede en derde parameter leeg zijn:
{{#invoke:String|sub|abc}}→ abc - De functie len uit Module:String retourneert de lengte van de eerste parameter:
{{#invoke:String|len|abc}}→ 3 - Het sjabloon {{trim}} retourneert de eerste parameter met eventuele spaties aan het begin of eind verwijderd:
{{trim|abc}}→ abc - Het sjabloon {{Isgetal}} retourneert 1 als de eerste parameter numeriek is:
{{Isgetal|123}}→ 1
Tekst met wiki-opmaak wordt letterlijk doorgegeven aan de module, en de opmaak wordt uitgevoerd na uitvoeren van de module:
{{#invoke:String|sub|'''vet'''}}, {{#invoke:String|len|'''vet'''}}→ vet, 9
Als een module een sjabloonaanroep als tekst retourneert, zal dat sjabloon niet uitgevoerd worden. Maar als je sjabloonaanroep als parameter naar een ander sjabloon gaat, is het in dat sjabloon wel mogelijk om het betreffende sjabloon alsnog uit te voeren. Dat gebeurt bijvoorbeeld in {{demo inline}}.
Strip markers
[bewerken | brontekst bewerken]Speciale tags zoals <nowiki> en <references> worden geconverteerd met en:Help:Strip markers en na afloop ook weer terug geconverteerd.
{{#invoke:String|len|<references/>}}, {{#invoke:String|sub|<references/>|5|-5}}→ 38, UNIQ--references-00000001-QINU
In lua kunnen die met mw.text.killMarkers() verwijderd worden. Met mw.text.unstripNoWiki() worden alleen de <nowiki> strip markers verwijderd.
Fouten
[bewerken | brontekst bewerken]- Pagina's met lua fouten komen in de categorie Categorie:Wikipedia:Pagina's met scriptfouten
