Vikipedio:Lua

El Vikipedio, la libera enciklopedio
Saltu al: navigado, serĉo
Logo de la Lua-lingvo Lua
Transparent.gif

VP:LUA

Kategorioj
Vidu ankaŭ
Komentoj
  1. (per {{Kun Lua-modulo}})
  2. (per {{LuaModuleDoc}})
v  d  r
Information icon.svg

Lua estas programa lingvo, kiu nun estas je dispono per la etendaĵo MediaWiki Scribunto. Lua-kodo estas metebla en vikiajn ŝablonojn per helpo de la funkcieco "{{#invoke:}}" de la etendaĵo MediaWiki Scribunto.

Fontokodo de Lua estas konservata en paĝoj de la nomspaco modulo (ekz. Module:Bananas). Ĉi tiuj unuopaj moduloj estas vokataj tiam (per "{{#invoke:}}") sur la ŝablonaj paĝoj (ekz. Module talk:Bananas uzas la kodon {{#invoke:Bananas|Bonvenon}}, por eldoni la tekston "Bonvenon mondo!").

Ekzemplaj moduloj[redakti | redakti fonton]

  • Module:Bananas: Plej simpla ebla skripto, kiu aldonas unusolan funkcion sen argumentoj.
  • Module:BananasArgs: Demonstras, kiel oni havas aliron al parametroj kaj kiel ili estas uzataj.

Peti pri skripto[redakti | redakti fonton]

Vizitu Vikipedio:Lua/Petoj, por peti pri helpo ĉe la skribado de Lua-skripto, kiu plenumu specifan taskon en la Vikipedio aŭ alia projekto de la fondaĵo Wikimedia Foundation.

Provado[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:xxxxxxxxxxxx
  • Modulo: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.

Historio[redakti | redakti fonton]

ParserFunctions, Etendaĵo Lua, vikia skripta lingvo estas debatata (JavaScript apud Lua), mw:Extension:WikiScripts, Tim Starling skribis Scribunto kun baza subteno por Lua.

Ekde jaroj diskutata, Lua estis testita en la jaro 2012 sur test2.wikipedia.org instalita kaj ĉiuj redaktantoj estis invitataj, partopreni ĉe eksperimentado ĉe la elevoluado de Lua-moduloj. Lua estis instalata en la angla Vikipedio en februaro 2013, post kiam ĝi estis testita sur mediwiki.org kaj testaj vikioj.

Pri Lua[redakti | redakti fonton]

Lua estas skripta lingvo, kiu estas uzebla por la analizado de datoj, elkalkulado de esprimoj kaj formatigo de rezultoj per helpo de funkcioj de objektema programado. Kvankam Lua-skripto estas facile aranĝebla, por facila kompreno, Lua ebligas kompleksajn strukturojn, kiuj defias komputikiston, kun tabeloj, dinamikaj funkcioj kaj asociativaj dataj kampoj, kie profunde metitaj indeksoj povas esti vortoj sed ankaŭ indeksaj numeroj. Lua ankaŭ subtenas rekursion de nestitaj funkcioj aŭ ebligas korutinoj por kooperativa plurtaskado, atentu tial je tio, ke vi evitas ekscesivan kompleksecon, kie aliaj uzantoj ne komprenus, kiel oni okupiĝu pri Lua-modulo. Sekvas ekzemplo por fontokodo kun Lua por faktoriala funkcio:

  function factorial(n)
    if n == 0 then
      return 1 --tio redonas rezulton 1, kiam nul estas transdonata
    else
      return n * factorial(n - 1)
    end
  end
  for index = 1,5 do
      print(index, "n! = ", factorial(index) )
  end

Ekzemplo por Lua emfazata per la markilo "<source lang="lua">...</source>", kiu estas metata ĉirkaŭ la fontan kodon. Por rigardi pli kompleksajn ekzemplojn por Lua, vidu artikolon: "de:Lua".

Por instrukcioj, kiel Lua estas uzata en MediaWiki, vidu mw:Extension:Scribunto/Lua reference manual.

Testado de unuoj[redakti | redakti fonton]

Tereno por la testado de unuoj por Lua-skriptoj sur Vikipedio estas je dispono sur Module:UnitTests. Ĝi ebligas al vi, ekzekuti vian skripton por certa aro de enigoj kaj provi, ĉu ĝi produktas la atendatan eligon. Testoj de unuoj estas aparte utilaj, por rapide eltrovi regresiojn, kie ŝanĝoj je skriptoj elvokas novajn problemojn.

Laŭ konvencio testoj de unuoj por modulo kiel Module:Bananas en Module:Bananas/tests estas enmetataj, kaj ekzekutaj sur Module talk:Bananas/tests kun ekz. {{#invoke: Bananas/tests|run_tests}}. Testaj metodoj devas komenciĝi per "test". Ĉi tie estas simpla ekzemplo kun Module:Bananas/tests:

-- Testoj de unuoj por [[:en:Module:Bananas|Module:Bananas]]. Klaku sur diskutan paĝon, por starti la testojn.
local p = require('Module:UnitTests')
 
function p:test_witaj()
    self:preprocess_equals('{{#invoke:Bananas | bonvenon}}', 'Bonvenon, mondo!')
end
 
return p

Por listo de ĉiuj moduloj, kiuj uzas testojn de unuoj, vidu Special:Whatlinkshere/Module:UnitTests.

Por Vikipedio specifaj funkcioj[redakti | redakti fonton]

Lua - enmetadaj limigoj[redakti | redakti fonton]

Lua-kodo en la etendaĵo Scribunto estas nur plenumata, kiam paĝo estas analizata. Tial la sola uzanto-enigo, kiun akceptas Lua, estas per redaktado de paĝo. Ĝi ne povas krei keston, kiu kalkulas kvadratan radikon, kiun vi entajpas, aŭ parton de Mandelbrota aro en dependeco de tio denove elkalkuli, sur kiun parton de superordigita aro vi klakas. Lua-enigo povas enhavi paĝon de transkludebla teksto sur Vikipedio. Tio ne inkludas grafikajn datumojn (nek .SVG-datumojn, kvankam ili estas aktuale teksto, krom ke vi elprenas kaj aldonas ĝin sur vikitekstan paĝon), listo de paĝoj en kategorio nek enhavo de specialaj paĝoj.

Vikiteksto[redakti | redakti fonton]

Transkludataj Vikipediaj kaplinioj ofte enhavas kaŝitan kodon kiel ekz. "UNIQ5ae8f2aa414ff233-h-3--QINU", kiu devas esti eventuale forigata, por esti analizata efektive.

Vikiligiloj de la tipo [[Wikipedia:Help|]] ne funkcias, se ili estas redonataj kiel eldono - ili devas esti skribataj eksplicite kiel [[Wikipedia:Help|Help]].

Vidu ankaŭ[redakti | redakti fonton]

Specifaj risurcoj de la angla Vikipedio
Specifaj risurcoj de la esperanta Vikipedio

Eksteraj ligiloj[redakti | redakti fonton]