Helpo:Lua
| |||
Kategorioj | |||
---|---|---|---|
Ŝablonoj | |||
| |||
Vidu ankaŭ | |||
Komentoj | |||
|
|||
Ŝablono | |
Rilataj temoj | |
---|---|
Listoj | |
Lua estas skriptolingvo, kiu la 13-an de marto 2013 fariĝis disponebla en la esperanta Vikipedio.
- La funkcioj estas aldonataj per nova parserila funkcio
{{#invoke:}}
en ĉirkaŭantan klasikan ŝablonon kaj kompletigas tiun per ĝeneralaj helpaj funkcioj, kiuj ĝis nun estis malfacile realigeblaj. - Kompare al Vikisintaksa ŝablona programado Lua ofertas antaŭ ĉio ĝis nun apenaŭ eblajn teknikojn rilate al signoĉenoj kaj pli grandaj kvantoj de numera datumoj.
- En MediaWiki ĝi estas enplektata per la mw:Extension:Scribunto, kiu ankaŭ ebligus pliajn skriptajn lingvojn.
Organizaj demandoj de la esperanta Vikipedio estas aranĝataj sur Vikipedio:Lua. La prezentado sur ĉi tiu helpopaĝo kontraŭe principe koncernas ĉiun ajn Vikion.
Ŝablona programado
[redakti | redakti fonton]Alvoko (regule ene de ŝablono):{{#invoke: Modulnomo | Funkcinomo | valoro1 | valoro2 | NomoX=valoro ... }}
La parametroj povas esti kiel ĉe ŝablonoj nomitaj aŭ nenomitaj.
- Ĉe nekonataj de ekstere venantaj enhavoj ne estu uzataj nenomitaj parametroj, resp.
1=valoro1
kiel ĉe ŝablonoj (pliakrigita egalsigna problemo; kondukas al sintaksa eraro). - La redona valoro de la vokanta funkcio estas signoĉeno kun Vikia teksto, kiu estas enmetata adekvate je ĉiu pozicioj en la artikolon. En kazo de redono de aliaj datumaj tipoj tiuj estas aŭtomate konvertataj uzante la funkcion tostring() en signoĉenon. Pliaj redonaj valoroj estas konkatenigataj sen disiga signo (kunigataj).
- Ekzemple: Modulo:Saluton – demonstrado: Saluton, mondo! Tio estas Lua!
- Je la tempopunkto de la funkcia alvoko la parserilo jam finfaris plurajn gravajn paŝojn, precipe la ŝablonan ekspansion kaj la prilaboradon de ektension-etikedoj (
<ref>
,<pre>
,<nowiki>
, …). Tiel kondukus rekta eldono de{{Ŝablono}}
do nur al eldono de la teksto{{Ŝablono}}
sen la fakta ŝablona ekspansio, vidu pri tio la Scribunto Lua referencon. - La plenuma ĉirkaŭaĵo estas remetata ĉe ĉiuj alvoko de
#invoke
. Rekta transpreno de variabloj inter du alvokoj ne estas ebla. - Ene de la vokanta ŝablono (resp. de la artikolo, se
#invoke
estas vokata rekte de artikolo) okazas la unuopaj alvokoj de#invoke
sinsekve kaj sub la uzado de la sama (ne alirebla) "gepatra" ĉirkaŭaĵo. Tio kondukas al kelkaj kromefikoj (vidu gepatra ĉirkaŭaĵo). - Malsamaj enplektoj de la ŝablono mem (ekz. en artikolo) kontraŭe estas prilaborataj paralele kaj ne havas gepatran ĉirkaŭaĵon.
Alvoko de #invoke
rekte en artikolo aŭ ĝenerala projektopaĝo estas absolute nedezirata. Ĉi tiuj alvokoj ĉiam estu pakataj en ŝablonojn; esceptaj estas tiaj projektopaĝoj, kiuj okupiĝas specife pri Lua (VP:LUA/***).
Limigoj
[redakti | redakti fonton]- Nestiga profundo kaj grando (ekspansio) estas nepre reduktataj per Lua. Paĝoj, kiuj ĝis nun ne povis esti surekranigataj, nun povas esti montrataj sen transiro de la limigo.
- La tempokonsumo por la kompleta surekranigo de paĝoj kun uzado de kompleksa ŝablona programado estas reduktebla al proksimume triono, se la ŝablona sintakso estas anstataŭigata per ekvivalentaj Lua-moduloj.
- Ĉiuj Lua-moduloj de paĝo estas limigataj al akumulata procesora tempo de 10 sekundoj. Ĉi tiu tempo estas elmontrata kiel la uzado de aliaj risurcoj en la HTML-a fontkodo kiel PP-Report de la antaŭtraktilo. En tempoj de alta servila ŝarĝo la plenuma tempo povas altiĝi ĝis la kvaroblo. Tial estu pripensata koda optimigo (apenaŭ signifantaj estas atendeblaj) aŭ apartigo de tro grandaj paĝoj, se estas atingata en favoraj tempoj entuta tempo de 2 sekundoj.
- Plia limigo povas esti la „multekostaj“ funkcioj. Ilia nombro por montrata kompleta paĝo estas limigita al 500. Al tio nombras inter alia la demando pri la ekzisto de paĝoj kaj dosieroj.
Modulaj paĝoj kaj provoj
[redakti | redakti fonton]Organizado de la paĝoj
[redakti | redakti fonton]- La fontokodoj staras en propra nomspaco
Modulo:
en moduloj.- Ĉiu modulo enhavas unu aŭ plurajn funkciojn en Lua.
- Eksklude paĝoj el la nomspaco
Modulo:
povas esti uzataj por la utiligo.- Vikipediistaj subpaĝoj ne estas eblaj; krom tuj en la hierarkio de la ŝablona provejo.
- Ankaŭ ĉiuj subpaĝoj en la modula nomspaco validas kiel fontokodo kaj ne estas surekranigataj kiel Vikia teksto. Nur la subpaĝoj de la interkonsentita skemo por la dokumentado validas kiel tekstoj.
- Paĝo kun Lua-fontokodo havas la Content Model
Scribunto
.
- Al ĉiu fontokoda paĝo estas ligata dokumentada paĝo, kiu ankaŭ estu uzata.
- Ŝablonoj ne estas efikaj en la fontokodo; proponoj je tuja forigo devas esti metataj al VP:AN aŭ kun indiko sur la ĉefpaĝon (modulo) en la dokumentadan paĝon. Rekta metado en kategoriojn estas same ne ebla.
- Moduloj estas administrataj kiel ŝablonoj (enplektado de paĝoj). Ili aperas ankaŭ sub „Ligiloj ĉi tien“, eĉ se ili ne estas enplektitaj per
#invoke
, sed perrequire()
estas alvokataj. Iloj nombras etwa la nombron de la enplektoj.
Alidirektiloj kaj alinomigoj
[redakti | redakti fonton]Alidirektiloj kaj alinomigoj de unua modula paĝo al alia ne estas eblaj. „Alidirektilo“ kreus Vikian sintakson anstataŭ Lua-fontokodo kaj (alie ol ĉe ŝablonoj) instigus enplektojn kaj require()
de la modulo al elmontrado de sintaksaj eraroj; tial povus alidirektilo eĉ ne senpene estas konservata.
Se la nomo de moduloj ne plu ŝajnas taŭga, la ekzisto de Lua-fontokodo devas resti certigata sub la programitaj nomoj. Ĉe produktive uzataj moduloj, kiuj jam estas enplektitaj de tre multaj paĝoj, la procedo estas relative komplikita; precipe se jam pluraj evoluigantoj estis kunagintaj.
- Unue estu kreata nova modulo sub la estonta nomo kaj plenigataj per la fontokodo.
- Se pluraj uzantoj partoprenis ĉe la programado, estu petata sur VP:IU versia importo ene de la sama projekto.
- Tiam ĉiuj uzadoj estu transmetataj al la nova nomo.
- La uzado en la surekranigataj paĝoj inklude de
require()
estas montrata sur Specialaĵo:Kio ligas ĉi tien?. Ĉi tiu listo poste devas esti malplena. - Je la fino la malnoviĝinta modulo estu forigata.
Ja povas esti atingata ĝis la nuligo de ĉiuj uzadoj unueca funkcieco, per tio ke kiel ununura linio estas metata: return require( "Modulo:NovaNomo" )
Prilaborado de paĝoj
[redakti | redakti fonton]- Ĉe la prilaborado de la fontkoda paĝo estas ŝaltataj la CodeEditor.
- Sencimiga konsolo estas montrata.
- Moduloj povas esti testataj en ŝablona ĉirkaŭaĵo (ene de alia paĝo).
Vidu ankaŭ Helpo:Lua/Fontokodo kaj antaŭrigardo
Provoj
[redakti | redakti fonton]- Provejo
- Libera provado de malgrandaj kodaj fragmentoj dum mallonga tempo.
- Por pli grandaj evoluaj laboroj ebligas la ŝablona provejo ankaŭ fontotekstajn modulojn sur la propraj uzantopaĝoj.
- Saluton
- Demonstracia modulo (Saluton, mondo!) –
Saluton, mondo! Tio estas Lua!
- Ĉiuj uzantoj
- por beta-testado fare de pluraj uzanto kun
Modulo:Uzantino:
xxxxxxxxxxxxModulo:Uzanto:
xyxyxyxyxyxy- Subpaĝoj por uzanto-moduloj estas eblaj. La ŝablona provejo estas tamen preferinda.
- Ŝablona provejo
- Ĉiuj uzantoj povas administri per la ŝablona provejo sur siaj uzantopaĝoj proprajn modulojn por la testado. Per editorContent tiam ankaŭ estas je dispono la CodeEditor.
Krome estas uzeblaj testwiki: kaj test2wiki:, ankaŭ de.wikipedia.beta. En esperanta vikipedio aperu tiam nur sufiĉe maturaj produktivaj versioj.
Programado en Lua
[redakti | redakti fonton]Vidu pri tio Helpo:Lua/Programado kun la speciala temoj
- Modulo en Vikio (interligiteco kun la Mediavikia softvaro),
- Modulo por certa ŝablono,
- Signoĉenoj,
- Ligiloj,
- Ĉirkaŭaĵo,
- Internaciigo
Pri la lingvo Lua ĝenerale vidu tiujn sub Eksteraj ligiloj donitajn manlibrojn.
Montrado de fontokodo
[redakti | redakti fonton]- Fontokodo povas esti montrata en tekstopaĝoj per
<syntaxhighlight lang="lua">
. - La enhavo de tuta modulo povas esti montrata kolore per:
{{#tag:syntaxhighlight |{{Modulo:Saluton}}| lang=lua}}
Eksteraj ligiloj
[redakti | redakti fonton]- Scribunto – Lua reference manual ĉe MediaWiki angle, france, ruse, vjetname
- Origina Lua-manlibro; enhavas partojn, kiuj ne eblas sur Vikia servilo:
- Lua 5.1 Reference Manual – lua.org angle, portugale
- lua.coders-online.net (germana traduko de la manlibro; ĜavaSkripto bezonata)
- en:Wikipedia:Lua style guide – Kodiiga normo angle
- Lua vs Javascript – Kial estis elektita Lua kaj ne JavaScript? angle
- Kodaj ekzemploj: