Saltar al contento

Wikipedia:Modulo

De Wikipedia, le encyclopedia libere

Un modulo Lua es un programma scribite in le linguage de programmation Lua.
Il es collocate in iste wiki sub le spatio de nomines Modulo:NomineDeModulo.
Un tal programma servi de extender le functionalitate de paginas wiki.

Salute Mundo! in Lua

[modificar fonte]

Effectivemente se tracta de un forma avantiate e extendite de patrono.
Le forma de appellar un modulo es un poco differente.
In loco de scriber:

{{NomineDePatrono|parametro}}

In pagina de Usator, on debe scriber le nomine sin le prefixo Modulo:

{{#invoke:NomineDeModulo|function|parametro}}

Tu pote executar le function denominate salute in minusculas in Modulo:Exemplo.
Il non es necessari installar o salvar alcun cosa.

  1. Modifica tu pagina de usator.
  2. Colla le sequente appello al initio de un nove linea in tu pagina de usator:
# {{#invoke:Exemplo|salute}}
# {{#invoke:Exemplo|salute_a|Livvy}}
  1. Clicca Monstrar previsualisation.
    Le appello del function salute in Modulo:Exemplo es reimplaciate per le sequente:
  1. Salute Mundo!
  2. Salute, Livvy!
  1. Clicca Cancellar. Quando demandate, clicca Abandonar.
  2. Tu pagina de usator remane inchangiate.

Apprender Lua

[modificar fonte]

Le Consola de depuration de Lua Scribunto es un instrumento secur e interactive pro apprender Lua in Wikipedia.

  1. Clicca Vider codice-fonte sur le pagina Modulo:String.
  2. Scrolle verso le fundo del pagina usque al section Consola de debug.
  3. Incolla le commento e le appel in le quadro de ingresso blau clar (supra le button Rader).
-- Tu prime programma Lua simile a [[Hello World]]--
print("Benvenite a " .. _VERSION .. "!") -- Concatena le version de Lua con `..`
  1. Pulsa ↵ Enter un vice pro executar le duo commandos Lua.
  2. Le resultato apparera sub le linea de commando Lua print:
Benvenite a Lua 5.1!
  1. Pulsa ↑ flecha verso alto pro cyclar inter le commandos Lua precedente.
  2. Optionalmente, clicca Rader pro vacuar solmente le Consola de depuration; le editor Lua supra remanera non modificate.


Generator HTML in le Consola de depuration

Appella le functiones salute e salute_a in Modulo:Exemplo:

local modHi = require('Modulo:Exemplo') -- carga le modulo in le Consola
print("1. " .. modHi.salute()) -- monstra "Salute Mundo!"

local frame = mw.getCurrentFrame() -- quadro
frame.args = {"Livvy"}
print("2. " .. modHi.salute_a(frame))
1. Salute Mundo!
2. Salute, Livvy!
Function de identitate

callParserFunction #if

-- #if yesno alora retorna su parametro de ingresso
local yesno = require('Modulo:Yesno')
print(mw.getCurrentFrame():callParserFunction("#if", yesno("Si"), "Si", 'no'))
print(mw.getCurrentFrame():callParserFunction("#if", yesno('no'), "Si", 'no'))
Si
no
  1. Claude le Modulo:String protegite, que remane non modificate.

Usar argumentos

[modificar fonte]

Le argumentos es transmittite al modulos del mesme maniera que illos es transmittite al patronos. Nota, tamen, que le texto post le prime signo de barra vertical es sempre le nomine del function; le prime argumento positional es le texto post le secunde signo de barra vertical (`|`).

Argumentos nominate |key=value
{{#invoke:NomineDeModulo|function|namedArgument1=value1|namedArgument2=value2}}

Un altere function in Modulo:Exemplo, nominate conta_fructos, usa le argumentos nominate |bananas= e |pomos= pro contar le numero de bananas e pomos que nos ha. Illo pote esser executate cambiando le ordine del argumentos.

Sur tu pagina de usator:

# {{#invoke:Exemplo|conta_fructos|pomos=3|bananas=4}}
# {{#invoke:Exemplo|conta_fructos|bananas=5|pomos=2}}
  1. Io ha 4 bananas e 3 pomos
  2. Io ha 5 bananas e 2 pomos

In le consola de depuration de Modulo:String:

local modFruit = require('Modulo:Exemplo')
local frame = mw.getCurrentFrame()
frame.args = {pomos="3", bananas="4"}
print("1. " .. modFruit.conta_fructos(frame))
frame.args = {bananas="5", pomos="2"}
print("2. " .. modFruit.conta_fructos(frame))
1. Io ha 4 bananas e 3 pomos
2. Io ha 5 bananas e 2 pomos

Le major parte del modulos ha un pagina de documentation que explica qual argumentos pote esser usate e qual effectos illos producera.

Testes Lua

[modificar fonte]

Un framework de testage unitarie pro scripts Lua sur Wikipedia es disponibile a Modulo:ScribuntoUnit.
Illo permitte executar tu script con un certe insimul de valores de entrata e verificar que le resultatos expectate es producite.
Le testes unitari es particularmente utile pro relevar rapidemente regressiones, in le qual modificationes a un script introduce nove problemas.

Per convention, le testes unitari pro un modulo como Modulo:Exemplo es placiate in Modulo:Exemplo/testcases.
Illos es executate sur Discussion Modulo:Exemplo/testcases con {{#invoke:Exemplo/testcases|run}}.

Sur tu pagina de usator:

{{#invoke:Exemplo/testcases|run}}

checkY Tote le tests ha succedite.

Nomine Expectate Actual
checkY test_hi

Cata methodo de test debe comenciar con p:test_.

Un exemplo de Modulo:Exemplo/testcases es monstrate infra.

--[[Modulo:Exemplo/testcases]]--
local p = require('Modulo:ScribuntoUnit').new()
local modHi = require('Modulo:Exemplo') -- Visita le pagina de discussion pro executar le tests.
function p:test_hi() -- Tests unitari pro [[Modulo:Exemplo]].
    self:assertEquals('Salute Mundo!', modHi.salute())
end 
return p

Depuration de Lua

[modificar fonte]

InfoBox (IB) Aristophanes

Sur tu pagina de usator: problema con le obsolete Modulo:Wikidata

# {{tick}} Nascentia: {{#invoke:Wikidata|getDateValue|P569|FETCH_WIKIDATA|ymd|qid=Q43353}}
# {{Xmark}} Decesso : {{#invoke:Wikidata|getDateValue|P570|FETCH_WIKIDATA|ymd|qid=Q43353}}
  1. check Nascentia: 448 BC, 444 BC, 450 BC, 446 BC, 445 BC
  2. X mark Decesso : Error de Lua in Modulo:Wikidata al linea 694: attempt to index field 'datavalue' (a nil value)

Extension del defecto: Amedeo III, Zoroastre, Jesus Christo, Mohamet ibn Musa al-Khwarizmi, Friedrich Nietzsche

Patrono:infobox → Patrono:infobox/articulo → Patrono:infobox/articulo/persona → Patrono:Infobox generic → Modulo:Wikidata


Sur tu pagina de usator: solution con Modulo:WikidataIB

# {{tick}} Nascentia: {{#invoke:WikidataIB|getValue|P569|ps=3|qid=Q43353}}
# {{tick}} Decesso  : {{#invoke:WikidataIB|getValue|P570|ps=3|qid=Q43353}}
  1. check Nascentia: c. 445 BC
  2. check Decesso  : 385 BC


Cite book

[modificar fonte]

Sur tua pagina de usator, colla le sequente Patrono:Cite book:

# {{cite book |last1=Guyer |first1=Paul |last2=Wood |first2=Allen W. |year=1998 |title=Critique of pure reason |publisher=Cambridge University Press |publication-place=Cambridge |isbn=978-0-511-80464-9 |doi=10.1017/CBO9780511804649}}
# {{cite book |last=Guyer |first=Paul |coauthors=Wood, Allen W. |year=1998 |title=Critique of pure reason |publisher=Cambridge University Press |publication-place=Cambridge |isbn=978-0-511-80464-9 |doi=10.1017/CBO9780511804649}}
# {{cite book |last=Guyer |first=Paul |coauthors=Wood, Allen W. |year=1998 |title=Critique of pure reason |publisher=Cambridge University Press |publication-place=Cambridge |isbn=978-0-511-80464-9 |doi=10.1017/CBO9780511804649 |ref=CITEREFGuyerWood1998}}
  1. (1998) Critique of pure reason. Cambridge University Press. doi:10.1017/CBO9780511804649. ISBN: 978-0-511-80464-9.
  2. Guyer, Paul; Wood, Allen W. (1998). Critique of pure reason. Cambridge University Press. doi:10.1017/CBO9780511804649. ISBN: 978-0-511-80464-9.
  3. Guyer, Paul; Wood, Allen W. (1998). Critique of pure reason. Cambridge University Press. doi:10.1017/CBO9780511804649. ISBN: 978-0-511-80464-9.


  1. |last1=Guyer |first1=Paul |last2=Wood |first2=Allen W. non es recognoscite per Patrono:Cite book
  2. |last=Guyer |first=Paul |coauthors=Wood, Allen W. non genera le ancóra HTML pro {{sfn|Guyer|Wood|1998|pp=4–13}}
  3. |ref=CITEREFGuyerWood1998 resolve le problema pro Patrono:Sfn, sed le contributores non divinara iste syntaxe.