« Module:Interface Wikidata » : différence entre les versions

De Neylandia - Wiki
Aller à la navigation Aller à la recherche
Modèle:Infobox_Pays>TomT0m
(suppression du chargement total de l’entité, inutile depuis qu’on peut récupérer les propriétés une par une (et qui pourrait rendre plus difficile le tracking de l’utilisation des données))
(Aucune différence)

Version du 9 novembre 2020 à 15:31

La documentation pour ce module peut être créée à Module:Interface Wikidata/doc

local p = {}
local d = require 'Module:Wikidata'

-- fonctions ne pouvant être appelées que depuis un autre module
p.fromLua = {
	
	-- manipulation d'une liste d'affirmations
	getClaims = d.getClaims,
	stringTable = d.stringTable,
	tableToText = d.tableToText,
	formatStatements = d.formatStatements,
	formatQualifiers = d.showQualifier,
	formatAndCat = d.formatAndCat,
	wikidataDate = d.wikidataDate,
	addLinkback = d.addLinkBack,
	addtrackingcat = d.addTrackingCat,
	
	-- manipulation d'une affirmation individelle
	getmainid = d.getMainId,
	formatStatement = d.formatStatement,
	statementDate = d.getFormattedDate, -- récupère la date des qualificatifs
	getFormattedQualifiers = d.getFormattedQualifiers,
	getQualifiers = d.getQualifiers,
	getReferences = d.getReferences,

	-- manipulation de snaks	
	getid = d.getId,
	formatSnak = d.formatSnak,
	
	-- utilisation de qids
	getEntity = d.getEntity,
	formatEntity = d.formatEntity,
	getLink = d.siteLink,
	getLabel = d.getLabel, --getLabel est plus simple que formatEntity

	-- utilisation des propriétés transitives
	isInstance = d.isInstance,
	isSubclass = d.isSubclass,
	addVals = d.addVals,
	transitiveVals = d.transitiveVals,
	inTransitiveVals = d.inTransitiveVals,
	findVal = d.findVal,

	-- gestion des dates
	mainDate = d.mainDate,
	getDate = d.getTheDate,
	keyDate = d.keyDate,

	-- Fonctions diverses
	citeItem = d.citeitem,
	translate = d.translate,
	Dump = d.Dump,
}

-- Fonctions frame pour usage depuis le Wikitexte (avec parfois des options pour gérer des données moins propres
local function cleanargs(args)
	local newargs = {}
	for i, j in pairs(args) do
		if j ~= '' then
			newargs[i] = j
		end
	end
	return newargs
end


function p.formatStatements( frame ) -- pour [[Modèle:Wikidata]]
	local args = {}
	if frame == mw.getCurrentFrame() then
		args = frame:getParent().args -- paramètres du modèle appelant (est-ce vraiment une bonne idée ?)
		for k, v in pairs(frame.args) do
			args[k] = v
		end
	else
		args = frame
	end
	return p.fromLua.formatStatements( args )
end

function p.addLinkBack( frame )
	local args = cleanargs(frame.args)
	if args[1] and args[1]:match"%S" then
		return d.addLinkBack( '', args.entity, mw.text.trim( args[1] ) )
	end
end

function p.formatEntity(frame)
	local args = cleanargs(frame.args)
	local entity = args.entity or args[1]
	return d.formatEntity(entity, args)
end

function p.formatAndCat(frame)
	local args = cleanargs(frame.args)
	return d.formatAndCat(args)
end

function p.citeItem(frame)
	local args = cleanargs(frame.args)
	local item, page = args[1], args['page']
	return p.fromLua.citeItem(item, page)
end

function p.getLabel(frame)
	local args = cleanargs(frame.args)
	local item = args[1]
	local lang = args[2] or "fr"
	return d.getLabel(item, lang)
end


function p.mainDate(frame)
	return d.mainDate(frame.args['entity'])	
end

function p.Dump(frame)
	return d.Dump(frame.args[1])
end

function p.formatQualifiers(frame)
	local args = frame.args
	return d.formatQualifiers(args)
end

function p.getDescription(frame) -- fonction simpliste, mais bon, les descriptions Wikidata, c'est pas non plus super utile
	return  mw.wikibase.description(frame.args[1])
end

function p.getLink(frame)
	local args = frame.args
	local link, proj, lang = p.fromLua.getLink(args[1], args[2], args[3])
	return link
end

function p.translate(frame)
	return d.translate(frame.args[1])
end

function p.findVal(frame)
	local args = frame.args
	return d.findVal(args.source, args.target, args.property, args.recursion, args.instancedepth)
end

function p.transitiveVals(frame)
	local args = frame.args
	return d.transitiveVals(args.item, args, args.maxdepth, args.maxnodes, args.stopval, true)
end

return p