« Module:WikidataTable » : différence entre les versions
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 | -- Fetch arguments from frame or parent template frame | ||
local title = | 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 | ||
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('&', '&') | |||
:gsub('"', '"') | |||
:gsub('<', '<') | |||
:gsub('>', '>') | |||
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('&', '&')
:gsub('"', '"')
:gsub('<', '<')
:gsub('>', '>')
end
return string.format(
'<div class="wikidata-sparql-table" data-sparql="%s" data-title="%s"></div>',
htmlEncode(sparql),
htmlEncode(title)
)
end
return p