« Module:WikidataTable » : différence entre les versions
Aller à la navigation
Aller à la recherche
Page créée avec « local p = {} local http = mw.http local json = mw.text.jsonDecode function p.render(frame) local sparql = frame.args.sparql local columns = frame.args.columns or "itemLabel" local title = frame.args.title if not sparql or sparql == "" then return "⚠️ No SPARQL query provided." end local url = "https://query.wikidata.org/sparql?format=json&query=" .. mw.uri.encode(sparql) local response = http.get(url) if... » |
Aucun résumé des modifications |
||
| (6 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
local p = {} | local p = {} | ||
function p.render(frame) | function p.render(frame) | ||
-- Fetch arguments from frame or parent template frame | |||
local | 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 | end | ||
local | local sparql = getArgs("sparql") | ||
local title = getArgs("title") | |||
if sparql == "" then | |||
return "⚠️ No SPARQL query provided." | |||
if | |||
end | 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 | end | ||
return string.format( | |||
'<div class="wikidata-sparql-table" data-sparql="%s" data-title="%s"></div>', | |||
htmlEncode(sparql), | |||
htmlEncode(title) | |||
) | |||
end | end | ||
return p | 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