Modul:Smiles: razlika između inačica

Izvor: Hrvatska internetska enciklopedija
Prijeđi na navigaciju Prijeđi na pretraživanje
mNema sažetka uređivanja
mNema sažetka uređivanja
 
Nije prikazano 9 međuinačica
Redak 1: Redak 1:
local p = {}
local p = {}
-- funkcija koja čisti parametre koje MediaWiki krivo interpretira
local function sanitize(v)
    if not v then return nil end
    -- ukloni nevidljive Unicode razmake i kontrolne znakove
    v = mw.ustring.gsub(v, "[\226\128\139\194\160]", "")
    v = mw.text.trim(v)
    if v == "" then return nil end
    return v
end


function p.render(frame)
function p.render(frame)
     local args = frame.args
    -- Provjera svih mogućih slojeva argumenata (roditeljski, trenutni, i alternativni)
     local par  = frame:getParent() and frame:getParent().args or {}
     local args = {}
   
     if frame:getParent() then
        for k, v in pairs(frame:getParent().args) do args[k] = v end
    end
   
    for k, v in pairs(frame.args) do args[k] = v end


     -- pokušaj svih mogućih izvora
     -- Tražimo parametar 'smiles' ili prvi neimenovani parametar
     local smiles =
     local smiles = args.smiles or args[1] or ""
        sanitize(args[1]) or
    local size = args.size or "260"
        sanitize(args.smiles) or
    local theme = args.theme or "light"
        sanitize(par[1]) or
        sanitize(par.smiles)


     -- fallback: ako MediaWiki pogrešno interpretira "C1=CC=CC=C1" kao "C1"
     -- Trimanje razmaka i novih redova
     if not smiles then
     if type(smiles) == "string" then
        for k, v in pairs(args) do
        smiles = string.gsub(smiles, "^%s*(.-)%s*$", "%1")
            if type(k) == "string" and mw.ustring.match(k, "^C%d") then
    else
                smiles = k .. "=" .. v
        smiles = ""
            end
        end
     end
     end


     if not smiles then
    -- Ako je i dalje prazno, HeaderTabs je potpuno sakrio predložak.
         return "[SMILES nije naveden]"
    -- U tom slučaju radimo fallback: dopuštamo slanje preko imenovanog 'smiles=' parametra
     if smiles == "" then
         return '<span class="error" style="color:red; font-weight:bold;">[Greška: HeaderTabs je blokirao parametre. Koristite {{Smiles|smiles=VAŠ_ZAPIS}}]</span>'
     end
     end


     -- opcije
     -- Prisilno učitavanje ResourceLoader modula
     local size  = tonumber(args.size or par.size) or 260
     frame:callParserFunction('#tag', { 'script', '', module = 'ext.smiles' })
    local theme = (args.theme or par.theme or "light"):lower()
    local svg  = (args.svg or par.svg or ""):lower()
 
    if theme ~= "light" and theme ~= "dark" then
        theme = "light"
    end


     local html = mw.html.create("div")
    -- Kreiranje HTML strukture
        :addClass("mw-smiles")
     local html = '<div class="mw-smiles" data-smiles="' .. mw.text.nowiki(smiles) .. '" data-size="' .. size .. '" data-theme="' .. theme .. '"></div>'
        :attr("data-smiles", smiles)
        :attr("data-size", size)
        :attr("data-theme", theme)
        :attr("data-svg", svg)


     return tostring(html)
     return frame:preprocess(html)
end
end


return p
return p

Posljednja izmjena od 27. lipanj 2026. u 13:36

Dokumentacija modula


local p = {}

function p.render(frame)
    -- Provjera svih mogućih slojeva argumenata (roditeljski, trenutni, i alternativni)
    local args = {}
    
    if frame:getParent() then
        for k, v in pairs(frame:getParent().args) do args[k] = v end
    end
    
    for k, v in pairs(frame.args) do args[k] = v end

    -- Tražimo parametar 'smiles' ili prvi neimenovani parametar
    local smiles = args.smiles or args[1] or ""
    local size = args.size or "260"
    local theme = args.theme or "light"

    -- Trimanje razmaka i novih redova
    if type(smiles) == "string" then
        smiles = string.gsub(smiles, "^%s*(.-)%s*$", "%1")
    else
        smiles = ""
    end

    -- Ako je i dalje prazno, HeaderTabs je potpuno sakrio predložak.
    -- U tom slučaju radimo fallback: dopuštamo slanje preko imenovanog 'smiles=' parametra
    if smiles == "" then
        return '<span class="error" style="color:red; font-weight:bold;">[Greška: HeaderTabs je blokirao parametre. Koristite {{Smiles|smiles=VAŠ_ZAPIS}}]</span>'
    end

    -- Prisilno učitavanje ResourceLoader modula
    frame:callParserFunction('#tag', { 'script', '', module = 'ext.smiles' })

    -- Kreiranje HTML strukture
    local html = '<div class="mw-smiles" data-smiles="' .. mw.text.nowiki(smiles) .. '" data-size="' .. size .. '" data-theme="' .. theme .. '"></div>'

    return frame:preprocess(html)
end

return p