« Module:Wikidata/Formatage entité » : différence entre les versions

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
retire les liens image pour le moment
0x010D (discussion | contributions)
Aucun résumé des modifications
Ligne 55 : Ligne 55 :
return wikipediaLink(entity, lang)
return wikipediaLink(entity, lang)
end
end
--[[
local errormsg = i18n['invalid-linktype']
local errormsg = i18n['invalid-linktype']
if type(linktype) ~= 'string' then
if type(linktype) ~= 'string' then
Ligne 62 : Ligne 63 :
end
end
return formatError(errormsg)  
return formatError(errormsg)  
]]--
end
end



Version du 26 août 2015 à 17:55

local p = {} local defaultlang = 'fr' local i18n = require "Module:Wikidata/I18n"

local function addcat(cat, sortkey) if sortkey then return end return end

local function wikipediaLink(entity, lang) lang = lang or defaultlang if (type(entity) == 'string') and (lang == defaultlang) then -- le plus économique return mw.wikibase.sitelink(entity) end if type(entity) == 'string' then entity = mw.wikibase.getEntityObject(entity) end if (not entity) or type(entity) ~= 'table' then return formatError('entity-not-found') end local link = entity:getSitelink(lang .. 'wiki') if link then return ':' .. lang .. ':' .. link end end

local function wikidataLink(entity) if type(entity) == 'string' then return ':d:' .. entity elseif type(entity) == 'table' then return ':d:' .. entity.id elseif type(entity) == nil then return formatError('entity-not-found') end end

function p.getLink(entity, linktype, lang) lang = lang or defaultlang linktype = linktype or 'wikipedia' if linktype == '-' then return nil end if linktype == 'wikipedia' then return wikipediaLink(entity, lang) elseif linktype == 'wikidata' then return wikidataLink(entity) end

-- analyse les valeurs du type 'enwiki' pour linktype = 'wikipedia', lang = 'en' local endstr = string.sub(linktype, #linktype - 3, #linktype) if endstr == 'wiki' then lang = string.sub(linktype, 1, #linktype - 4) return wikipediaLink(entity, lang) end --[[ local errormsg = i18n['invalid-linktype'] if type(linktype) ~= 'string' then errormsg = errormsg .. ': ' .. linktype else errormsg = errormsg .. ':' .. type(linktype) end return formatError(errormsg) ]]-- end

function p.getLabel(entity, lang, site, displayformat) if (not entity) then return formatError('entity-not-found') end

lang = lang or defaultlang site = site or (lang .. 'wiki')

if (site == '-') then return nil end

if (type(entity) == 'string') and (lang == defaultlang) then -- le plus économique return mw.wikibase.label(entity) end

if type(entity) == 'string' then entity = mw.wikibase.getEntityObject(entity) end if not args then args = {} end if entity.labels and entity.labels[lang] then return entity.labels[lang].value, true end end

function p.formatEntity( entity, params )

if (not entity) then return formatError('entity-not-found') end local id = entity if type(id) == 'table' then id = id.id end


params = params or {} local lang = params.lang or lang local speciallabels = params.speciallabels local displayformat = params.displayformat local defaultlabel = params.defaultlabel or id local linktype = params.link local defaultlinktype = params.defaultlink or 'enwiki' local showotherlink = not(parenthesislink)


if speciallabels and speciallabels[id] then --speciallabels override the standard label + link combination return speciallabels[id] end if params.displayformat == 'raw' then return id end

local link, label local str = -- l'intégralité du text à retourner

label = p.getLabel(entity, lang, displayformat) if (not label) then if (defaultlabel == '-') then return nil end str = str .. addcat(i18n['to translate']) link = p.getLink(id, 'wikidata') -- si pas de libellé, lier vers Wikidata pour avoir quelque chose de lisible

return str .. '' .. defaultlabel .. '' end


if (linktype == '-') then return str end

local link = p.getLink(entity, linktype, lang)

if link then return str .. '' .. label .. '' end

if (defaultlinktype ~= '-') then local rightlink = p.getLink(entity, defaultlinktype, lang) or p.getLink(entity, 'wikidata', lang) if rightlink then local prefix = mw.text.split(rightlink, ':')[2] or 'voir ailleurs' return str .. label .. ' (' .. prefix .. ')' end end return str .. label end

return p