« Module:WikidataTable » : différence entre les versions

De Wikiromandie.org
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(4 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
local p = {}
function p.render(frame)
function p.render(frame)
     local sparql = frame.args.sparql or ""
    -- Fetch arguments from frame or parent template frame
     local title  = frame.args.title or ""
     local getArgs = function(key)
        return (frame.args and frame.args[key])
            or (frame:getParent() and frame:getParent().args and frame:getParent().args[key])
            or ""
    end
 
    local sparql = getArgs("sparql")
     local title  = getArgs("title")


     if sparql == "" then
     if sparql == "" then
Ligne 7 : Ligne 16 :
     end
     end


     return '<div class="wikidata-sparql-table"'
    -- Clean query string
        .. ' data-sparql="' .. mw.text.nowiki(sparql) .. '"'
    sparql = sparql:gsub('<nowiki>', ''):gsub('</nowiki>', '')
        .. ' data-title="' .. mw.text.nowiki(title) .. '">'
                  :gsub('\194\160', ' ') -- Remove non-breaking spaces
        .. '</div>'
                  :gsub('%s+', ' ')    -- Collapse spaces and newlines
 
    local function htmlEncode(s)
        return s:gsub('&', '&amp;')
                :gsub('"', '&quot;')
                :gsub('<', '&lt;')
                :gsub('>', '&gt;')
    end
 
     return string.format(
        '<div class="wikidata-sparql-table" data-sparql="%s" data-title="%s"></div>',
        htmlEncode(sparql),
        htmlEncode(title)
    )
end
end
return p

Dernière version du 21 septembre 2026 à 12:41

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

local p = {}

function p.render(frame)
    -- Fetch arguments from frame or parent template frame
    local getArgs = function(key)
        return (frame.args and frame.args[key]) 
            or (frame:getParent() and frame:getParent().args and frame:getParent().args[key]) 
            or ""
    end

    local sparql = getArgs("sparql")
    local title  = getArgs("title")

    if sparql == "" then
        return "⚠️ No SPARQL query provided."
    end

    -- Clean query string
    sparql = sparql:gsub('<nowiki>', ''):gsub('</nowiki>', '')
                   :gsub('\194\160', ' ') -- Remove non-breaking spaces
                   :gsub('%s+', ' ')     -- Collapse spaces and newlines

    local function htmlEncode(s)
        return s:gsub('&', '&amp;')
                :gsub('"', '&quot;')
                :gsub('<', '&lt;')
                :gsub('>', '&gt;')
    end

    return string.format(
        '<div class="wikidata-sparql-table" data-sparql="%s" data-title="%s"></div>',
        htmlEncode(sparql),
        htmlEncode(title)
    )
end

return p