Saltar ao contido

Wikipedia:Módulos

Na Galipedia, a Wikipedia en galego.
(Redirección desde «Wikipedia:Lua»)
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.

  1. Edita a túa páxina de usuario.
  2. Pega a seguinte chamada ao principio dunha liña nova na túa páxina de usuario:
{{#Invoke:Páxinas|existe|Penélope Cruz}}
  1. Fai clic en Amosar a vista previa. A chamada da función existe en Módulo:Páxinas será substituída pola seguinte:
Penélope Cruz

Cando a páxina do wiki existe, existe é a función identidade.

  1. Fai clic en Cancelar. Cando se che pida confirmación, fai clic en Leave.
  2. 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.

  1. Fai clic en Ver fonte na páxina Módulo:Math.
  2. Vai ao final da páxina á sección Consola de depuración.
  3. 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 `..`
  1. Preme ↵ Enter unha vez para executar os dous comandos Lua.
  2. O resultado aparecerá debaixo da liña de comando print de Lua:
Benvido a Lua 5.1!
  1. Preme flecha arriba para percorrer os comandos Lua anteriores.
  2. Opcionalmente, fai clic en Limpar para limpar só a Consola 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
  1. 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]]&nbsp;[[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;">&nbsp;</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]]&nbsp;[[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;">&nbsp;</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]]&nbsp;[[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;">&nbsp;</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]