Module:Infobox

De Lagny-sur-Marne Wiki
Révision datée du 16 mars 2013 à 11:19 par Tpt (discussion) (Nouvelle page : local Infobox = {} function Infobox:new( args ) --Object initialisation local object = { text = "", title = mw.title.getCurrentTitle() } setmetata...)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

La documentation pour ce module peut être créée à Module:Infobox/doc

local Infobox = {}

function Infobox:new( args )
    --Object initialisation
    local object = {
        text = "",
        title = mw.title.getCurrentTitle()
    }
    setmetatable(object, {
        __index = Infobox,
        __tostring = function( self ) return self:tostring() end
    })

    --Open main div
    local str = '<div class="infobox_v3 '
    if args.class then
        str = str .. args.class
    end
    str = str ..'"'
    if args.width then
        str = str .. ' style="width: ' .. args.width .. 'em"'
    end
    object.text = str .. '>'
    return object
end

function Infobox:addTitle( args )
    local str = '<p class="entete '
    if args.icon then
        str = str .. 'icon ' .. args.icon
    end
    if args.class then
        str = str .. args.class
    end
    str = str .. '"'
    if args.background then
        local style = {}
        style['background-color'] = args.background
        if args.border-color then
            style['border-color'] = args.border-color
        else
            style['border-color'] = args.background
        end
        if args.color then
            style['color'] = args.color
        end
        str = str .. 'style="' .. formatStyle( style ) .. '"'
    end
    str = str .. '>'
    if args.text then
        str = str .. args.text
    else
        str = str .. self.title.text
    end
    self.text = self.text .. str .. '</p>'
end

function Infobox:tostring()
    return self.text .. '</div>'
end

--Create a style property value from an array CSS property = CSS value
function formatStyle( args )
    local elems = {}
    for args = key, val do
        elems.add( key .. ':' .. val )
    end
    return table.concat( elems, '; ' )
end

local p = {}
function p.new( args )
    return Infobox:new( args )
end
function p.test()
    local a = Infobox:new( {} )
    a:addTitle( {} )
    return a
end
return p