Modulo:Navbox: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Annullata la modifica 95563930 di Rotpunkt (discussione) ripristino per errore da correggere Etichetta: Annulla |
aggiornato stile documentazione a quello usato in Mediawiki per Lua, utilizzo di Modulo:Controllo parametri sconosciuti, successivo a questo modulo |
||
Riga 1:
--[[
* Modulo
]]--
require('Modulo:No globals')
local getArgs = require('Modulo:Arguments').getArgs
-- Numero massimo di liste e gruppi per i template Navbox e Navbox_subgroup
local MAX_LIST_NAVBOX = 30
local MAX_LIST_NAVBOX_SUBGROUP = 20
-- =============================================================================
-- Funzioni di utilità
-- =============================================================================
-- Restituisce una sequence Lua ordinata contenente gli ID dei listN presenti.
-- Se withGroup è true, controlla anche i groupN.
--
-- @param {table} args
-- @param {boolean} withGroup
-- @return {table}
local function getIds(args, withGroup)
local ret, ids = {}, {}
for key, _ in pairs(args) do
if type(key) == 'string' then
local id = key:match('^list(%d+)$') or (withGroup and key:match('^group(%d+)$'))
if id and tonumber(id) <= (withGroup and MAX_LIST_NAVBOX or MAX_LIST_NAVBOX_SUBGROUP) then
ids[tonumber(id)] = true
end
end
end
for key, _ in pairs(ids) do
table.insert(ret, key)
end
table.sort(ret)
return ret
end
--
--
-- @param {string} list
-- @return {string}
local function trimSep(list)
local sep = mw.getCurrentFrame():expandTemplate{ title = "," }
local sepEsc = mw.ustring.gsub(sep, '-', '%-')
return mw.ustring.gsub(list, '%s*' .. sepEsc .. '%s*', sep)
Line 78 ⟶ 49:
-- Con il debug ridefinisce il metodo mw.html:css,
-- permettendo di eseguire i test senza controllare anche i css.
--
-- @param {table} tableNode
local function disableCSS(tableNode)
local mt = getmetatable(tableNode)
Line 83 ⟶ 56:
end
-- =============================================================================
--
-- =============================================================================
local Navbox = {}
-- Costruttore della classe Navbox.
--
-- @param {table} args - gli argomenti passati al modulo
-- @return {table} un nuovo oggetto Navbox
function Navbox:new(args)
local self = {}
Line 101 ⟶ 78:
setmetatable(self, { __index = Navbox })
self.args = args
-- costruzione
self.tableNode = mw.html.create('table')
if self.args.debug then
Line 107 ⟶ 84:
end
self:_setupTableNode()
-- prima
thNode = self.tableNode:tag('tr')
:tag('th')
Line 119 ⟶ 96:
self:_addTitle(thNode)
end
-- eventuale
if self.args.above then
self:_addAboveOrBelow(self.args.above, self.args.abovestyle)
end
-- altre
self:_addLists()
-- eventuale
if self.args.below then
self:_addAboveOrBelow(self.args.below, self.args.belowstyle)
Line 133 ⟶ 110:
end
-- Restituisce la tabella HTML.
--
-- @return {string}
function Navbox:getHTML()
return tostring(self.tableNode)
end
-- Configura gli stili CSS della tabella
function Navbox:_setupTableNode()
local tableStyle = {
Line 159 ⟶ 140:
end
-- Aggiunge il Tnavbar (collegamenti alla pagina del template, di discussione e modifica).
--
-- @param {table} node
function Navbox:_addTnavbar(node)
local divStyle = {
Line 177 ⟶ 161:
end
-- Imposta il titolo del navbox dal parametro "title".
--
-- @param {table} node
function Navbox:_addTitle(node)
node:tag('span'):css('font-size', '110%'):wikitext(self.args.title)
end
-- Aggiunge la riga per i parametri "above" e "below".
--
-- @param {string} arg
-- @param {string} argStyle
function Navbox:_addAboveOrBelow(arg, argStyle)
local tdStyle = {
Line 196 ⟶ 187:
end
-- Aggiunge una colonna per l'immagine.
--
-- @param {table} trNode
-- @param {number} rowspan
function Navbox:_addImage(trNode, rowspan)
local tdStyle = {
Line 210 ⟶ 205:
end
-- Aggiunge una nuova riga per ogni groupN/listN
function Navbox:_addLists()
local rowIds, altStyle, altBackground
Line 258 ⟶ 254:
end
-- =============================================================================
--
-- =============================================================================
local NavboxSubgroup = {}
-- Costruttore della classe NavboxSubgroup.
--
-- @param {table} args - gli argomenti passati al modulo
-- @return {table} un nuovo oggetto NavboxSubgroup
function NavboxSubgroup:new(args)
local self = {}
Riga 269:
setmetatable(self, { __index = NavboxSubgroup })
self.args = args
-- costruzione
self.tableNode = mw.html.create('table')
if self.args.debug then
Riga 280:
end
-- Restituisce la tabella HTML.
--
-- @return {string}
function NavboxSubgroup:getHTML()
return tostring(self.tableNode)
end
-- Configura gli stili CSS della tabella.
function NavboxSubgroup:_setupTableNode()
local tableStyle = {
Line 300 ⟶ 304:
end
-- Aggiunge una nuova riga per ogni groupN/listN.
function NavboxSubgroup:_addLists()
local listIds, altStyle
Line 332 ⟶ 337:
end
-- =============================================================================
-- Funzioni
-- =============================================================================
local p = {}
-- Funzione per l'utilizzo da un altro modulo.
function p._navbox(args)
return Navbox:new
end
-- Funzione per l'utilizzo da un altro modulo.
function p._navbox_subgroup(args)
return NavboxSubgroup:new
end
--
function p.navbox(frame)
return p._navbox(getArgs(frame, {
end
--
function p.navbox_subgroup(frame)
return p._navbox_subgroup(getArgs(frame, {
end
|