Module:Bac à sable/RexxS-Eihel/Source
La documentation de ce module est générée par le modèle {{Documentation module}}.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
-- NE PAS SUPPRIMER CETTE PAGE (EN COURS D'ELABORATION) MERCI
--
--[[
Module pour tester un modèle pour des sources fiables
Imaginé par Adam Harangozó
Crée par RexxS
Testé et amélioré par Eihel
Voir:
https://en.wikipedia.org/wiki/User_talk:Adam_Harangoz%C3%B3/template
https://en.wikipedia.org/wiki/User:Adam_Harangoz%C3%B3/template_specs
https://en.wikipedia.org/wiki/User:Adam_Harangoz%C3%B3/template_properties
https://en.wikipedia.org/wiki/User:Eihel/template_fr
--]]
local p = {}
-- This piece of html implements a collapsible container. Check the classes exist on your wiki.
local collapsediv = '<div class="mw-collapsible mw-collapsed mw-content-{{Dir|{{Pagelang}}}} plainlinks noarchive" style="width:100%; overflow:auto;" data-expandtext="{{int:Collapsible-expand}}" data-collapsetext="{{int:Collapsible-collapse}}">'
-- All results appear as internal links (to avoid archive links)
local illook = '<div class="mw-content-{{Dir|{{Pagelang}}}} plainlinks plainlinksneverexpand noarchive nowrap">'
-- Add the name of the source below present in [[Special:Index/Module:Source/]]
local sources = mw.loadData("Module:Bac à sable/RexxS-Eihel/Source/Données")
-- Add below the heading of the source, the following "Sources relating..." (example: "Sources relating to encyclopedias")
-- The previous entry must be separated by a comma
-- The addition must have been the subject of a consensus by the community
local sourceHeadername = {
["encyclopedia"] = "to encyclopedias"
}
local function findLang(langcode)
local langobj
langcode = mw.text.trim(langcode or "")
if mw.language.isKnownLanguageTag(langcode) then
langobj = mw.language.new( langcode )
else
langcode = mw.getCurrentFrame():preprocess( '{{int:lang}}' )
if mw.language.isKnownLanguageTag(langcode) then
langobj = mw.language.new( langcode )
else
langobj = mw.language.getContentLanguage()
end
end
return langobj
end
function p.testlist(frame)
local out = "" -- output text
for langcode, langdata in pairs(sources) do
-- just the language codes
out = out.."\n=== "..langcode.." ==="
for idx, src in ipairs(langdata) do
out = out.."\n"..src[1].."; WD="..src[2].."; loc="..src[3].."<br>\n"
end
out = out.."<br>\n"
end
return out
end
--[[
Parameters:
qid
lang
--]]
function p.demo(frame)
local args = frame.args
local qid = args.qid or ""
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
local langcode = findLang(args.lang).code
local out1 = {}
for idx1, src in ipairs(sources[langcode]) do
local statements = mw.wikibase.getBestStatements(qid, src[2])
for idx2, valtbl in ipairs(statements) do
if valtbl.mainsnak.datatype == "external-id" and valtbl.mainsnak.snaktype == "value" then
local idurl = valtbl.mainsnak.datavalue.value:gsub("%%", "%%%%")
out1[#out1 + 1] = "[" .. src[3]:gsub("$1", idurl) .. " " .. src[1] .. "]"
end
end
end
local locallang = ""
if #out1 > 0 then
--locallang = "Lang = " .. langcode .. "<br>" .. frame:expandTemplate{title = "hlist", args = out1}
locallang = illook .. frame:expandTemplate{title = "hlist", args = out1} .. "</div>"
end
local out2 = {}
for srclangcode, langdata in pairs(sources) do
if srclangcode ~= langcode then
for idx1, src in ipairs(langdata) do
local statements = mw.wikibase.getBestStatements(qid, src[2])
for idx2, valtbl in ipairs(statements) do
if valtbl.mainsnak.datatype == "external-id" and valtbl.mainsnak.snaktype == "value" then
local idurl = valtbl.mainsnak.datavalue.value:gsub("%%", "%%%%")
out2[#out2 + 1] = "[" .. src[3]:gsub("$1", idurl) .. " " .. src[1] .. "]"
end
end
end
end
end
local otherlang = ""
if #out2 > 0 then
--otherlang = "Lang = other<br>" .. frame:expandTemplate{title = "hlist", args = out2}
otherlang = collapsediv .. frame:expandTemplate{title = "hlist", args = out2} .. "</div>"
end
return locallang .. otherlang
end
return p