Vikipedija:Lua

Puslapis iš Vikipedijos, laisvosios enciklopedijos.

Luaprogramavimo kalba, naudojama Vikipedijos moduliuose, kurie gali būti naudojami šablonuose.

Moduliai yra iškviečiami su specialia sintakse {{#invoke:<Modulio pavadinimas>|<Funkcijos pavadinimas>|(neprivalomai) parametras1 | parametras2...}}). Pavyzdys:

Vikitekstas Rezultatas
{{#invoke:Example|hello}} Hello World!

Visi lietuviškojoje Vikipedijoje naudojami moduliai pateikiami šiame puslapyje.

Modulio paleidimas[redaguoti vikitekstą]

Moduliai viki puslapiuose paleidžiami naudojant #invoke analizatoriaus funkciją. #invoke sintaksė panaši į šablono funkciją, tačiau skiriasi. Svariausias skirtumas – reikia nurodyti funkcijos pavadinimą. Funkcija – tai instrukcijų rinkinys, kuris priima pradinius duomenis, apdoroja juos ir grąžina atsakymą. Panašiai veikia ir šablonas: jis priima parametrus, apdoroja juos ir grąžina rezultatą. Lua modulyje galima apibrėžti daug funkcijų, o puslapyje sukurti galima tik vieną šabloną.

Dar vienas niuansas – pačio Lua modulio paleisti negalima, būtinai reikia nurodyti konkrečias funkcijas. Modulis – tai tarsi funkcijų konteineris ir nieko pats savaime nedaro. Taigi yra dvi priežastys, kodėl reikia nurodyti funkcijos pavadinimą:

  1. pačio modulio paleisti negalima;
  2. be funkcijos pavadinimo Lua nežino, kurią funkciją norima paleisti.

Paprasčiausias būdas viki puslapyje paleisti modulį:

{{#invoke:modulio pavadinimas|funkcijos pavadinimas}}

Pavyzdžiui, modulį Module:Example, kuris turi funkciją „hello“ galima paleisti taip:

  • {{#invoke:Example|hello}} → Hello World!

Parametrų naudojimas[redaguoti vikitekstą]

Argumentai į modulius paduodami tuo pačiu būdu kaip į šablonus. Skirtumas tas, kad po pirmojo stačiojo brūkšnio visada pateikiamas funkcijos pavadinimas, o pirmosios pozicijos argumentas – tekstas po antrojo stačiojo brūkšnio.

{{#invoke:modulio pavadinimas|funkcijos pavadinimas|pirmosios pozicijos argumentas|antrosios pozicijos argumentas|įvardytas argumentas = reikšmė}}

Modulyje Module:Example, funkcija „hello_to“ pasisveikina su skirtingais žmonėmis, priklausomai nuo pirmosios pozicijos argumento. Funkcijos paleidimas atrodo taip:

  • {{#invoke:Example|hello_to|Kate}} → Hello, Kate!
  • {{#invoke:Example|hello_to|Fred}} → Hello, Fred!

Trečioji Module:Example funkcija, pavadinimu „count_fruit“, naudoja įvardytus argumentus bananas ir apples suskaičiuoti, kiek turime bananų ir obuolių. Funkcijos paleidimas atrodo taip:

  • {{#invoke:Example|count_fruit|apples=3|bananas=4}} → I have 4 bananas and 3 apples
  • {{#invoke:Example|count_fruit|bananas=5|apples=2}} → I have 5 bananas and 2 apples

Modulių argumentai ir jų poveikis dažnai aprašomas modulių dokumentacijos puslapiuose.