« Module:Sandbox/TiagoLubiana/Infobox » : différence entre les versions

Contenu supprimé Contenu ajouté
TiagoLubiana (discuter | contributions)
Aucun résumé des modifications
TiagoLubiana (discuter | contributions)
Aucun résumé des modifications
Ligne 35 :
 
--[=[
BuildsDeclaring functions to builds the infobox title block code
 
Parameters (partial list):
Ligne 67 :
return title
end
p.buildTitle = p.buildtitle
 
function p.buildimages(params)
Ligne 200 ⟶ 199 :
:done()
end
p.buildImages = p.buildimages
 
function p.buildtext(params)
Ligne 228 ⟶ 226 :
return formattedtext
end
p.buildText = p.buildtext
 
function p.buildrow(params)
Ligne 303 ⟶ 300 :
return row
end
p.buildRow = p.buildrow
 
function p.buildsuccession(params)
Ligne 495 ⟶ 491 :
return rowI
end
p.buildSuccession = p.buildsuccession
 
function p.buildtable(params)
Ligne 577 ⟶ 572 :
return tab
end
p.buildTable = p.buildtable
 
function p.buildinvalidblock(args)
Ligne 589 ⟶ 583 :
return text
end
p.buildInvalidBlock = p.buildinvalidblock
 
function p.buildmap(params)
 
-- paramètre d'affichage
local maplist = getValue(params.maps)
local pointtype = params.pointtype
local maptype = params.maptype -- choisit le type de carte le plus approprié (relief, administratif, etc.)
if type(maplist) == 'function' then
maplist = maplist(localdata, localdata.item)
end
local width = tonumber(params.width) or 280
if width > 280 then
addMaintenanceCat("Erreur d'Infobox/Image trop grande")
return 'image trop grande, la largeur doit être inférieure ou égale à 280px'
end
 
-- récupération des données locales
local pointtable = {}
local globe = params.globe
if params.latitude then
local lat, long
if type(params.latitude) == 'function' then
lat, long = params.latitude(localdata, localdata.item), params.longitude(localdata, localdata.item)
else
lat, long = localdata[params.latitude], localdata[params.longitude]
end
if lat then
table.insert(pointtable, {latitude = lat, longitude = long})
end
end
 
-- récupération des données wikidata
local function processWDval(claim, displayformat)
if not claim then
return nil
end
local val = wd.formatSnak( claim.mainsnak )
return {latitude = val.latitude, longitude = val.longitude, globe = val.globe, marker = displayformat.marker}
end
local function getWDvals(query)
query.excludespecial = true
query.numval = query.numval or 1
query.entity = query.entity or localdata.item
local claims = wd.getClaims(query)
if (not claims) then
return
end
for i, claim in ipairs(claims) do
claim = processWDval(claim, query)
table.insert(pointtable, claim)
end
end
if (#pointtable == 0) and localdata.item and params.wikidata and (params.wikidata ~= '-') then
for i, query in ipairs(params.wikidata) do
if type(query) == 'function' then
query = query()
end
if query then
getWDvals(query)
end
end
end
if (not pointtable) or (#pointtable == 0) then
return nil
end
local newparams = {maplist = maplist, pointtype = pointtype, maptype = maptype, width = width, item = localdata.item, pointtable = pointtable, globe = globe, marker=params.marker, default_zoom=params.default_zoom, ids = params.ids, markercolor = params.markercolor, shapecolor = params.shapecolor }
if params.params and type(params.params) == 'table' then -- paramètres additionnels
for i, j in pairs(params.params) do
newparams[i] = j
end
end
return require('Module:Carte').multimap(newparams)
end
p.buildMap = p.buildmap
 
function p.buildexternaltext(params)
Ligne 675 ⟶ 590 :
end
end
p.buildExternalText = p.buildexternaltext
 
function p.buildfooter(params)
Ligne 716 ⟶ 630 :
return footer
end
p.buildFooter = p.buildfooter
 
function p.buildblock(block)
Ligne 743 ⟶ 656 :
return blocktypes[block.type](block)
end
p.buildBlock = p.buildblock
 
function p.build()
Ligne 897 ⟶ 809 :
end
 
-- Calling the functions
 
p.buildTitle = p.buildtitle
p.buildImages = p.buildimages
p.buildText = p.buildtext
p.buildRow = p.buildrow
p.buildSuccession = p.buildsuccession
p.buildTable = p.buildtable
p.buildInvalidBlock = p.buildinvalidblock
p.buildExternalText = p.buildexternaltext
p.buildFooter = p.buildfooter
p.buildBlock = p.buildblock
 
return p