Módulo:Noticia

De Inkipedia

La documentación para este módulo puede ser creada en Módulo:Noticia/doc

local p = {}

function p.getStyleForColor(color)
    local result = {
        ["verde"] = "rgb(170, 220, 0)",
        ["verdeazulado"] = "rgb(47, 172, 172)",
        ["azul"] = "rgb(0, 153, 255)",
        ["naranja"] = "rgb(255, 128, 0)",
        ["amarillo"] = "rgb(235, 238, 61)",
        ["rojo"] = "rgb(217, 0, 0)",
        ["rosa"] = "rgb(240, 60, 120)",
        ["marron"] = "rgb(174, 21, 102)",
        ["gris"] = "rgb(201, 201, 201)",
    }

    return result[color] or color
end

function p.main(frame)
    local args = frame:getParent().args
    local color = args.color or 'verde'
    local alineacion = args.align or ''
    local alineamientoTexto = args['text-align'] or 'left'
    local ancho = args.width or ''
    local imagen = args.file or ''
    local tamanoImagen = args.filesize or '48px'
    local encabezado = args.header or ''
    local contenido = args.content or ''

    local root = mw.html.create('div')
        :addClass('notice')
        :attr('align', alineacion)
        :css('text-align', alineamientoTexto)
        :css('border-color', p.getStyleForColor(color))
        :css('border-radius', "5px 5px 5px 5px")
        :css('border-style', "solid")
        :css('border-width', "1px 5px 1px 5px")
        :css('column-gap', "1em")
        :css('display', "flex")
        :css('flex-direction', "row")
        :css('margin', ".5em 0")
        :css('padding', ".5em")

    if ancho ~= '' then
        root:css('width', ancho)
    end

    if imagen ~= '' then
        root:tag('div')
            :addClass('notice-image')
            :css('position', "relative")
            :css('top', "50%")
            :wikitext(string.format('[[File:%s|%s|link=]]', imagen, tamanoImagen))
    end

    local contentDiv = root:tag('div')
            :addClass('notice-content')
            :css('flex-grow', 1)

    if encabezado ~= '' then
        contentDiv:tag('div')
            :addClass('notice-header')
            :css('font-weight', 600)
            :wikitext(encabezado)
    end

    contentDiv:tag('div')
            :addClass('notice-description')
            :css('font-size', "9pt")
            :wikitext(contenido)

    return tostring(root)
end

return p