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
Redak 2: Redak 2:


function p.render(frame)
function p.render(frame)
     -- Dohvaćanje argumenata iz predloška
     -- Provjeravamo oba izvora argumenata jer HeaderTabs zna promijeniti kontekst frejma
     local args = frame:getParent().args
     local parentArgs = frame:getParent().args or {}
    local smiles = args[1] or args.smiles or ""
     local currentArgs = frame.args or {}
     local size = args.size or "260"
    local theme = args.theme or "light"


     -- Čišćenje SMILES stringa od razmaka i novih redova
     -- Pokušaj dohvatiti SMILES iz bilo kojeg dostupnog parametra
     smiles = string.gsub(smiles, "%s+", "")
     local smiles = parentArgs[1] or parentArgs.smiles or currentArgs[1] or currentArgs.smiles or ""
    local size = parentArgs.size or currentArgs.size or "260"
    local theme = parentArgs.theme or currentArgs.theme or "light"


     -- Ako nema SMILES-a, nemoj vraćati ništa ili vrati grešku
     -- Čišćenje SMILES stringa od razmaka, novih redova i nevidljivih znakova
    if type(smiles) == "string" then
        smiles = string.gsub(smiles, "^%s*(.-)%s*$", "%1") -- trim razmaka s početka i kraja
    else
        smiles = ""
    end
 
    -- Ako je nakon čišćenja prazno, ispiši precizniju poruku za debugiranje
     if smiles == "" then
     if smiles == "" then
         return '<span class="error">SMILES parametar fali!</span>'
         return '<span class="error" style="color:orange; font-weight:bold;">[Smiles greška: Prazan unos unutar taba]</span>'
     end
     end


Redak 19: Redak 26:
     frame:callParserFunction('#tag', { 'script', '', module = 'ext.smiles' })
     frame:callParserFunction('#tag', { 'script', '', module = 'ext.smiles' })


     -- Kreiramo strogi, čisti HTML string.
     -- Kreiramo čisti HTML string
    -- Izbjegavamo mw.html jer ponekad u kombinaciji s HeaderTabs zna krivo zatvoriti tagove.
     local html = '<div class="mw-smiles" data-smiles="' .. mw.text.nowiki(smiles) .. '" data-size="' .. size .. '" data-theme="' .. theme .. '">'
     local html = '<div class="mw-smiles" data-smiles="' .. mw.text.nowiki(smiles) .. '" data-size="' .. size .. '" data-theme="' .. theme .. '">'
     html = html .. '<noscript>[[Datoteka:Smiles-fallback.png|200px|link=]]</noscript>'
     html = html .. '<noscript>[[Datoteka:Smiles-fallback.png|200px|link=]]</noscript>'
     html = html .. '</div>'
     html = html .. '</div>'


     -- Vraćamo HTML omotan u preprocesor kako bi MediaWiki znao da je to siguran HTML
     -- Vraćamo HTML spreman za obradu
     return frame:preprocess(html)
     return frame:preprocess(html)
end
end


return p
return p

Inačica od 27. lipanj 2026. u 13:34

Dokumentacija modula


local p = {}

function p.render(frame)
    -- Provjeravamo oba izvora argumenata jer HeaderTabs zna promijeniti kontekst frejma
    local parentArgs = frame:getParent().args or {}
    local currentArgs = frame.args or {}

    -- Pokušaj dohvatiti SMILES iz bilo kojeg dostupnog parametra
    local smiles = parentArgs[1] or parentArgs.smiles or currentArgs[1] or currentArgs.smiles or ""
    local size = parentArgs.size or currentArgs.size or "260"
    local theme = parentArgs.theme or currentArgs.theme or "light"

    -- Čišćenje SMILES stringa od razmaka, novih redova i nevidljivih znakova
    if type(smiles) == "string" then
        smiles = string.gsub(smiles, "^%s*(.-)%s*$", "%1") -- trim razmaka s početka i kraja
    else
        smiles = ""
    end

    -- Ako je nakon čišćenja prazno, ispiši precizniju poruku za debugiranje
    if smiles == "" then
        return '<span class="error" style="color:orange; font-weight:bold;">[Smiles greška: Prazan unos unutar taba]</span>'
    end

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

    -- Kreiramo čisti HTML string
    local html = '<div class="mw-smiles" data-smiles="' .. mw.text.nowiki(smiles) .. '" data-size="' .. size .. '" data-theme="' .. theme .. '">'
    html = html .. '<noscript>[[Datoteka:Smiles-fallback.png|200px|link=]]</noscript>'
    html = html .. '</div>'

    -- Vraćamo HTML spreman za obradu
    return frame:preprocess(html)
end

return p