Modulo:Stemma: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
Nuovo modulo
 
m fix
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 6: Riga 6:
* Template:Stemma_con_ornamenti_comuni/parametro* (~180 sottopagine nella "Categoria:Template ornamenti esteriori")
* Template:Stemma_con_ornamenti_comuni/parametro* (~180 sottopagine nella "Categoria:Template ornamenti esteriori")
]]
]]

-- Moduli
local htmlBuilder = require("Modulo:HtmlBuilder")


-- Configurazione
-- Configurazione
Riga 75: Riga 72:
function Stemma:__tostring()
function Stemma:__tostring()
root = htmlBuilder.create()
root = mw.html.create('')
root
root
.tag("table")
:tag("table")
.attr("border", "0")
:attr("border", "0")
.attr("cellspacing", "0")
:attr("cellspacing", "0")
.attr("cellpadding", "0")
:attr("cellpadding", "0")
.attr(self.align and "align" or nil, self.align)
:attr(self.align and "align" or nil, self.align)
.css("margin", "0")
:css("margin", "0")
.css("border", "none")
:css("border", "none")
.css("padding", "0")
:css("padding", "0")
.css("background-color", "transparent")
:css("background-color", "transparent")
.tag("tr")
:tag("tr")
.tag("td")
:tag("td")
.tag("div")
:tag("div")
.css("position", "relative")
:css("position", "relative")
.wikitext("[[File:" .. self.ornFile .. "|" .. self.ornSize .. "px]]")
:wikitext("[[File:" .. self.ornFile .. "|" .. self.ornSize .. "px]]")
.tag("div")
:tag("div")
.css("position", "absolute")
:css("position", "absolute")
.css("border", "none")
:css("border", "none")
.css("top", self.scudoTop .. "px")
:css("top", self.scudoTop .. "px")
.css("left", self.scudoLeft .. "px")
:css("left", self.scudoLeft .. "px")
.tag("div")
:tag("div")
.css("position", "absolute")
:css("position", "absolute")
.css("top", "0px")
:css("top", "0px")
.css("left", "0px")
:css("left", "0px")
.wikitext("[[File:" .. (self.scudoFile or cfg.defaultScudo) ..
:wikitext("[[File:" .. (self.scudoFile or cfg.defaultScudo) ..
"|" .. self.scudoSize .. "px]]")
"|" .. self.scudoSize .. "px]]")



Versione delle 16:20, 19 feb 2014

Modulo Lua che implementa il template {{Stemma con ornamenti comuni}}.

Ha una sottopagina di configurazione: Modulo:Stemma/Configurazione.


--[[
* Modulo per implementare le funzionalità di "Stemma con ornamenti comuni"
*
* Traduce in lua:
* Template:Stemma_con_ornamenti_comuni
* Template:Stemma_con_ornamenti_comuni/parametro* (~180 sottopagine nella "Categoria:Template ornamenti esteriori")
]]

-- Configurazione
local cfg = mw.loadData("Modulo:Stemma/Configurazione")

-------------------------------------------------------------------------------
--                           Funzioni di utilità
-------------------------------------------------------------------------------

-- Error handler per xpcall, formatta l'errore
local function errhandler(msg)
    return string.format("<span style=\"color:red;\">Errore: %s</span>", msg:match(".+:(.+)$"))
end

-- Ritorna gli argomenti passati al modulo, eliminando quelli contenenti stringhe vuote
local function getArgs(frame)
    local args = {}
 
    for k, v in pairs(frame:getParent().args) do
        if v ~= "" then
            args[k] = v
        end
    end
 
    return args
end

-------------------------------------------------------------------------------
--                                classe Stemma
-------------------------------------------------------------------------------

local Stemma = {}
 
function Stemma:new(args)
    local self = {}
 
    setmetatable(self, { __index = Stemma,
                         __tostring = function(t) return self:__tostring() end,
                         __concat = function(t, t2) return tostring(t) .. tostring(t2) end })
 
    -- ha 1 parametro posizionale e 3 con nome
    self.ornName = args[1]
    self.scudoFile = args["stemma"]
    self.align = args["align"]
    self.coef = tonumber(args["coef"])

    -- ricerca l'ornamento
    self.orn = cfg.ornamenti[self.ornName]

    -- verifica argomenti
    if not self.orn then
        error("l'ornamento " .. (self.ornName or "") .. " non è valido")
    elseif args["coef"] and not self.coef then
        error("coef non è valido")
    end

    self.coef = self.coef or 1
    self.ornFile = self.orn[1]
    self.ornSize = tonumber(self.orn[2]) * self.coef
    self.scudoSize = tonumber(self.orn[3]) * self.coef
    self.scudoTop = (tonumber(self.orn[4]) + 50) * self.coef
    self.scudoLeft = (tonumber(self.orn[5]) + 50) * self.coef
 
    return self
end
 
function Stemma:__tostring()
    root = mw.html.create('')
    root
        :tag("table")
            :attr("border", "0")
            :attr("cellspacing", "0")
            :attr("cellpadding", "0")
            :attr(self.align and "align" or nil, self.align)
            :css("margin", "0")
            :css("border", "none")
            :css("padding", "0")
            :css("background-color", "transparent")
            :tag("tr")
                :tag("td")
                    :tag("div")
                        :css("position", "relative")
                        :wikitext("[[File:" .. self.ornFile .. "|" .. self.ornSize .. "px]]")
                        :tag("div")
                             :css("position", "absolute")
                             :css("border", "none")
                             :css("top", self.scudoTop .. "px")
                             :css("left", self.scudoLeft .. "px")
                             :tag("div")
                                 :css("position", "absolute")
                                 :css("top", "0px")
                                 :css("left", "0px")
                                 :wikitext("[[File:" .. (self.scudoFile or cfg.defaultScudo) ..
                                           "|" .. self.scudoSize .. "px]]")

    return tostring(root)
end

-------------------------------------------------------------------------------
--                              API
-------------------------------------------------------------------------------

local p = {}

-- Entry-point per {{Stemma con ornamenti comuni}}
function p.stemma(frame)
    return select(2, xpcall(function() return Stemma:new(getArgs(frame)) end, errhandler))
end
 
return p