Modulo:Interprogetto

Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Interprogetto/man (modifica · cronologia)
Sandbox: Modulo:Interprogetto/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Interprogetto/test (modifica · cronologia · esegui)
Modulo Lua per svolgere le funzioni di {{Interprogetto}}.
Ha una sottopagina di configurazione: Modulo:Interprogetto/Configurazione.
Errore Lua in package.lua alla linea 80: module 'Module:HtmlBuilder' not found.
-- Modulo per implementare le funzionalità di template:Interprogetto
local p = {} -- per l'esportazione delle funzioni del modulo
local HtmlBuilder = require('Module:HtmlBuilder') -- richiesto per la costruzione del markup html
local args -- variabile che contiene gli argomenti passati al template
local root -- radice del markup html
--Tabella di corrispondenza tra valore e file da richiamare
local prefix_links ={
wiksource = { 's:', 'Wikisource' },
s = {'s:', 'Wikisource'},
testo = {'s:', 'Wikisource'},
oldwikisource = {'oldwikisource:', 'Wikisource'},
wikiquote = {'q:', 'Wikiquote'},
q = {'q:', 'Wikiquote'},
wikibooks = {'wikibooks:', 'Wikibooks'},
b = {'b:', 'Wikibooks'},
ricetta = {'b:Libro di cucina/Ricette/', 'Ricetta<br />(Wikibooks)'},
wiktionary = {'wiktionary:', 'Wikizionario'},
wikt = {'wikt:', 'Wikizionario'},
v = {'v:', 'Wikiversità'},
wikinews = {'wikinews:', 'Wikinotizie'},
n = {'n:', 'Wikinotizie'},
}
--TODO collegamenti che usano Interprogetto/CollegamentoUseLang
local function RenderLeftBar()
-- Crea la barra di sinistra con i link interprogetto
if args.notizia then return end
-- Apertura del tag div id="interProject" (vedi [[Mediawiki:Monobook.js]] o [[Mediawiki:Vector.js]])
local leftbar = root
.tag('div')
.attr('id', 'interProject')
.cssText('display: none; clear: both; border-top: 2px dotted #AAAAAA; margin-top: 2em;')
.tag('div')
.attr('title', 'Collegamenti verso gli altri progetti Wikimedia')
for k,v in pairs(args) do
prefix, label = prefix_links[k]
if prefix_links[k] then
leftbar.wikitext('* [[' .. prefix .. v .. '|' .. label .. ']]')
end
end
end
local function _interprogetto()
--radice del markup ritornato
root = HtmlBuilder.create('')
RenderLeftBar()
return tostring(root)
end
function p.interprogetto(frame)
local origArgs
-- Se chiamata mediante #invoke, usa gli argomenti passati al template invocante.
-- Altrimenti a scopo di test assume che gli argomenti siano passati direttamente
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
-- Carico i parametri
args = {}
for k, v in pairs(origArgs) do
-- controlla se è un parametro posizionale e se si salva il suo valore come chiave
local kn = tonumber(k)
if kn then
args[v] = ''
else
args[k]=v
end
end
return _interprogetto()
end
return p