Wikipedia:Módulos
| Espazos de nomes da Wikipedia | |||
|---|---|---|---|
| Espazos de nomes básicos | Espazos de nomes conversa | ||
| 0 | Principal (ou Artigo) | Conversa | 1 |
| 2 | Usuario | Conversa usuario | 3 |
| 4 | Wikipedia | Conversa Wikipedia | 5 |
| 6 | Ficheiro | Conversa ficheiro | 7 |
| 8 | MediaWiki | Conversa MediaWiki | 9 |
| 10 | Modelo | Conversa modelo | 11 |
| 12 | Axuda | Conversa axuda | 13 |
| 14 | Categoría | Conversa categoría | 15 |
| 100 | Portal | Conversa portal | 101 |
| 102 | Libro | Conversa libro | 103 |
| 828 | Módulo | Conversa módulo | 829 |
| 2300 | [[Wikipedia:Trebellos|]] | 2301 | |
| 2302 | [[Wikipedia:Trebellos|]] | 2303 | |
| 2600 | |||
| Espazos de nomes virtuais | |||
| -1 | Especial | ||
| -2 | Media | ||
O espazo de nomes Módulo: contén o código fonte das páxinas que utilizan a linguaxe de programación Lua, que pode empregarse na Galipedia a través da Extensión Mediawiki Scribunto. O código Lua pode usarse en modelos wiki empregando a funcionalidade {{#invoke:}} desta extensión Scribunto.
Executar un módulo
[editar a fonte]Os módulos executanse noutras páxinas da Wikipedia usando a función #invoke. A sintaxe de #invoke é semellante á sintaxe dos modelos, pero con algunhas diferenzas. A máis inportante destas diferenzas é que se necesita especificar o nome da función. Unha función é un conxunto de instrucións que toma unha serie de valores de entrada, procésaos, e devolve un valor de saída.
Non se pode executar un módulo Lua directamente, só se pode empregar unha das funcións do módulo. O módulo é so un contedor para as funcións, e non fai nada por si mesmo.
A forma máis sinxela de usar un módulo dende outra páxina da wiki é:
{{#invoke:NomeDoMódulo|nomeDaFunción|argumentos}}
Non necesitas instalar nin gardar nada.
- Edita a túa páxina de usuario.
- Pega a seguinte chamada ao principio dunha liña nova na túa páxina de usuario:
{{#Invoke:Páxinas|existe|Penélope Cruz}}
- Fai clic en
Amosar a vista previa. A chamada da funciónexisteen Módulo:Páxinas será substituída pola seguinte:
Penélope Cruz
Cando a páxina do wiki existe, existe é a función identidade.
- Fai clic en
Cancelar. Cando se che pida confirmación, fai clic enLeave. - A túa páxina de usuario queda sen modificar.
Empregando argumentos
[editar a fonte]Os argumentos pásanse aos módulos da mesma forma que se fai para os modelos. Porén, nas chamadas módulos o primeiro valor que segue á primeira barra vertical (|) sempre é o nome da función que se está a chamar. O primeiro argumento posicional sempre se coloca tras a segunda barra vertical.
{{#invoke:NomeDoMódulo|nomeDaFunción|primeiroArgumento|segundoArgumento|argumentoConNome=valor}}
Os módulos deben ter unha páxina de documentación que explique que argumentos se poden empregar e os efectos que terá cada un deles.
Consola de depuración: Comeza a aprender Lua
[editar a fonte]A Consola de depuración de Lua Scribunto é unha ferramenta interactiva e segura para aprender Lua en Wikipedia.
- Fai clic en
Ver fontena páxina Módulo:Math. - Vai ao final da páxina á sección
Consola de depuración. - Pega o comentario e a chamada no cadrado de entrada de cor gris (por riba do botón
Limpar).
--[[O teu primeiro programa Lua tipo "Ola, mundo"]]-- print("Benvido a " .. _VERSION .. "!") -- Concatena a versión de Lua con `..`
- Preme ↵ Enter unha vez para executar os dous comandos Lua.
- O resultado aparecerá debaixo da liña de comando
printde Lua:
Benvido a Lua 5.1!
- Preme ↑
flecha arribapara percorrer os comandos Lua anteriores. - Opcionalmente, fai clic en
Limparpara limpar só aConsola de depuración; o editor de Lua de arriba permanecerá sen modificar.
- Xerador HTML na Consola de depuración
Chama a función existe en Módulo:Páxinas:
local modPaxinas = require('Módulo:Páxinas') -- carga o Módulo na Consola de depuración print(modPaxinas.existe({args={"Penélope Cruz"}})) -- amosa o nome da actriz
Función identidade:
Penélope Cruz
- callParserFunction #if
local yesno = require('Módulo:Yesno') -- #if yesno entón devolve o seu parámetro de entrada print(mw.getCurrentFrame():callParserFunction("#if", yesno("Si"), "Si", 'non')) print(mw.getCurrentFrame():callParserFunction("#if", yesno("non"), "Si", 'non'))
Si non
- Pecha o protexido
Módulo:Math que queda sen modificar.
Características específicas na Wikipedia
[editar a fonte]Lua só pode recibir entradas de valores en forma de cadeas de texto nas chamadas {{#invoke:}} e nos valores retornados por mw.title.new(...):getContent() e frame:expandTemplate(). As saídas devoltas por Lua non serán pre-procesadas agás que se faga unha chamada explícita á mw.getCurrentFrame():preprocess().
Na consola de depuración na páxina Módulo:Math:
print(mw.getCurrentFrame():preprocess('{{PAGENAME}}'))
Math
É posible usar funcións de biblioteca como mw.title.getCurrentTitle() para obter o título do módulo actual.
print(mw.title.getCurrentTitle())
Módulo:Math
Non obstante, non podes importar datos de ficheiros, nin sequera de ficheiros .svg que conteñan datos de texto en XML.
Cita libro
[editar a fonte]
Amosar a vista previa na páxina de usuario:
* {{Cita libro |apelidos1=Bosque |nome1=Ignacio |apelidos2=Gutiérrez-Rexach |nome2=Javier |ano=2020 |título=Fundamentos de sintaxis formal |editorial=Akal |localización=Tres Cantos, Madrid |isbn=978-84-460-2227-5}}
- Bosque, Ignacio; Gutiérrez-Rexach, Javier (2020). Fundamentos de sintaxis formal. Tres Cantos, Madrid: Akal. ISBN 978-84-460-2227-5.
Consola de depuración na páxina Módulo:Math:
local function buildFrame(templateTitle, parentArgs, moduleName, childArgs)
local root = mw.getCurrentFrame()
local parent = root:newChild{title=templateTitle, args=parentArgs or {}}
return parent:newChild{title=moduleName, args=childArgs or {}}
end
local prm = {last1="Bosque", first1="Ignacio", last2="Gutiérrez-Rexach", first2="Javier",
year="2020", title="Fundamentos de sintaxis formal",
publisher="Akal", ["publication-place"]="Tres Cantos, Madrid", isbn="978-84-460-2227-5"
}
local moduleName = "Módulo:Citas"; local childArg = {CitationClass = "book"}
local frame = buildFrame("Modelo:Cita libro", prm, moduleName, childArg)
print(require(moduleName).citation(frame))
<cite class="citation book">Bosque, Ignacio; Gutiérrez-Rexach, Javier (2020). ''Fundamentos de sintaxis formal''. Tres Cantos, Madrid: Akal. [[ISBN|ISBN]] [[Special:BookSources/978-84-460-2227-5|978-84-460-2227-5]].</cite><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fgl.wikipedia.org%3AM%C3%B3dulo%3AMath&rft.au=Guti%C3%A9rrez-Rexach%2C+Javier&rft.aufirst=Ignacio&rft.aulast=Bosque&rft.btitle=Fundamentos+de+sintaxis+formal&rft.date=2020&rft.genre=book&rft.isbn=978-84-460-2227-5&rft.place=Tres+Cantos%2C+Madrid&rft.pub=Akal&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span>
Con ref="harv":
local function buildFrame(templateTitle, parentArgs, moduleName, childArgs)
local root = mw.getCurrentFrame()
local parent = root:newChild{title=templateTitle, args=parentArgs or {}}
return parent:newChild{title=moduleName, args=childArgs or {}}
end
local prm = {last1="Bosque", first1="Ignacio", last2="Gutiérrez-Rexach", first2="Javier",
year="2020", title="Fundamentos de sintaxis formal",
publisher="Akal", ["publication-place"]="Tres Cantos, Madrid", isbn="978-84-460-2227-5",
ref="harv"
}
local moduleName = "Módulo:Citas"; local childArg = {CitationClass = "book"}
local frame = buildFrame("Modelo:Cita libro", prm, moduleName, childArg)
print(require(moduleName).citation(frame))
Xerar id="CITEREFBosqueGutiérrez-Rexach2020" para Modelo:Sfn:
<cite id="CITEREFBosqueGutiérrez-Rexach2020" class="citation book">Bosque, Ignacio; Gutiérrez-Rexach, Javier (2020). ''Fundamentos de sintaxis formal''. Tres Cantos, Madrid: Akal. [[ISBN|ISBN]] [[Special:BookSources/978-84-460-2227-5|978-84-460-2227-5]].</cite><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fgl.wikipedia.org%3AM%C3%B3dulo%3AMath&rft.au=Guti%C3%A9rrez-Rexach%2C+Javier&rft.aufirst=Ignacio&rft.aulast=Bosque&rft.btitle=Fundamentos+de+sintaxis+formal&rft.date=2020&rft.genre=book&rft.isbn=978-84-460-2227-5&rft.place=Tres+Cantos%2C+Madrid&rft.pub=Akal&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span>
Sen ref="harv", Consola de depuración no programa de edición de Español de es:Módulo:Citas:
local function buildFrame(templateTitle, parentArgs, moduleName, childArgs)
local root = mw.getCurrentFrame()
local parent = root:newChild{title=templateTitle, args=parentArgs or {}}
return parent:newChild{title=moduleName, args=childArgs or {}}
end
local prm = {last1="Bosque", first1="Ignacio", last2="Gutiérrez-Rexach", first2="Javier",
year="2020", title="Fundamentos de sintaxis formal",
publisher="Akal", ["publication-place"]="Tres Cantos, Madrid", isbn="978-84-460-2227-5"
}
local moduleName = "Módulo:Citas"; local childArg = {CitationClass = "book"}
local frame = buildFrame("Modelo:Cita libro", prm, moduleName, childArg)
print(require(moduleName).cita(frame)) -- chama cita en Español pero non citation en Galego
<span id="CITAREFBosqueGutiérrez-Rexach2020" class="citation">Bosque, Ignacio; Gutiérrez-Rexach, Javier (2020). ''Fundamentos de sintaxis formal''. Tres Cantos, Madrid: Akal. <small>[[ISBN|ISBN]] [[Special:BookSources/978-84-460-2227-5|978-84-460-2227-5]]</small>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fes.wikipedia.org%3AM%C3%B3dulo%3ACitas&rft.au=Bosque%2C+Ignacio&rft.au=Guti%C3%A9rrez-Rexach%2C+Javier&rft.aufirst=Ignacio&rft.aulast=Bosque&rft.btitle=Fundamentos+de+sintaxis+formal&rft.date=2020&rft.genre=book&rft.isbn=978-84-460-2227-5&rft.place=Tres+Cantos%2C+Madrid&rft.pub=Akal&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span>
Limitacións nas entradas
[editar a fonte]
O código Lua en Scribunto só se executa cando a páxina é recalculada. Polo tanto, a única forma de entrada de valores que pode recibir é mediante a edición de páxina, non é interactiva.
As entradas que pode recibir Lua son polo tanto calquera das páxinas da Wikipedia que se poden transcluír noutras. Isto non inclúe páxinas de ficheiros, a lista das páxinas incluídas nunha categoría, ou o contido das páxinas especiais.
Texto wiki
[editar a fonte]
As ligazóns wiki do tipo [[Wikipedia:Axuda|]] non funcionarán se se indican coma unha saída do módulo. Deben escribirse de forma explícita coma [[Wikipedia:Axuda|Axuda]]. Outras transformacións, coma substituír ~~~~ cunha sinatura, non serán procesadas correctamente.
Etiquetar os modelos
[editar a fonte]
Por favor, inserta o código {{ModeloLua|Módulo:Nome1|Módulo:Nome2|...}} na sub-páxina de documentación dos modelos que usan módulos Lua.
Véxase tamén
[editar a fonte]
Outros artigos
[editar a fonte]