Mudanças entre as edições de "Módulo:Teste"

De Wiki Gla
Ir para navegação Ir para pesquisar
Linha 3: Linha 3:
function p.render(frame)
function p.render(frame)
     local args = frame:getParent().args or {}
     local args = frame:getParent().args or {}
     local nomeImagem = args.imagem or ""
     local pointsStr = args.points or ""
     local pontosStr = args.pontos or ""
     local html = mw.html.create()


     if nomeImagem == "" then
     if pointsStr == "" then
        return mw.html.create("div")
            :css("color", "red")
            :wikitext("Erro: imagem não informado em Módulo:Teste.")
            :allDone()
    end
 
    local container = mw.html.create("div")
 
    if pontosStr == "" then
         return ""
         return ""
     end
     end


     for ponto in mw.text.gsplit(pontosStr, ";", true) do
     for item in mw.text.gsplit(pointsStr, ";", true) do
         ponto = mw.text.trim(ponto)
         item = mw.text.trim(item)
         if ponto ~= "" then
         if item ~= "" then
             local x, y, descricao, alvo = ponto:match("^%s*(%d+)%s*|%s*(%d+)%s*|%s*(.-)%s*|%s*(.-)%s*$")
            -- Espera cada “item” no formato: X|Y|Descrição|PáginaDestino
             if x and y and descricao and alvo then
             local x, y, desc, target = item:match("^(%d+)|(%d+)|(.+)|(.+)$")
                 local pointSpan = container:tag("span")
             if x and y and desc and target then
                 local span = html:tag("span")
                     :addClass("map-point")
                     :addClass("map-point")
                     :css("top", y .. "px")
                     :css("top", y .. "px")
                     :css("left", x .. "px")
                     :css("left", x .. "px")


                 local titleObj = mw.title.new(alvo)
                 span:tag("a")
                local href = titleObj and titleObj:getUrl() or "#"
                     :attr("href", mw.title.new(target):getFullText())
 
                     :wikitext(desc)
                pointSpan:tag("a")
                     :attr("href", href)
                     :wikitext("")
                     :done()
                     :done()


                 pointSpan:tag("span")
                 span:tag("span")
                     :addClass("tooltip")
                     :addClass("tooltip")
                     :wikitext(descricao)
                     :wikitext(desc)
                    :done()
            else
                container:tag("div")
                    :css("color", "red")
                    :wikitext("Parâmetro de ponto inválido: <code>" .. ponto .. "</code>")
                     :done()
                     :done()
             end
             end
Linha 50: Linha 34:
     end
     end


     return tostring(container)
     return tostring(html)
end
end


return p
return p

Edição das 22h53min de 5 de junho de 2025

A documentação para este módulo pode ser criada em Módulo:Teste/doc

local p = {}

function p.render(frame)
    local args = frame:getParent().args or {}
    local pointsStr = args.points or ""
    local html = mw.html.create()

    if pointsStr == "" then
        return ""
    end

    for item in mw.text.gsplit(pointsStr, ";", true) do
        item = mw.text.trim(item)
        if item ~= "" then
            -- Espera cada “item” no formato: X|Y|Descrição|PáginaDestino
            local x, y, desc, target = item:match("^(%d+)|(%d+)|(.+)|(.+)$")
            if x and y and desc and target then
                local span = html:tag("span")
                    :addClass("map-point")
                    :css("top", y .. "px")
                    :css("left", x .. "px")

                span:tag("a")
                    :attr("href", mw.title.new(target):getFullText())
                    :wikitext(desc)
                    :done()

                span:tag("span")
                    :addClass("tooltip")
                    :wikitext(desc)
                    :done()
            end
        end
    end

    return tostring(html)
end

return p