<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wicri-demo.istex.fr/Wicri/Base131/fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AWikidata%2FOutils</id>
	<title>Module:Wikidata/Outils - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wicri-demo.istex.fr/Wicri/Base131/fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AWikidata%2FOutils"/>
	<link rel="alternate" type="text/html" href="https://wicri-demo.istex.fr/Wicri/Base131/fr/index.php?title=Module:Wikidata/Outils&amp;action=history"/>
	<updated>2026-04-19T06:00:09Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.31.10</generator>
	<entry>
		<id>https://wicri-demo.istex.fr/Wicri/Base131/fr/index.php?title=Module:Wikidata/Outils&amp;diff=1401&amp;oldid=prev</id>
		<title>Jacques Ducloy : 1 révision importée</title>
		<link rel="alternate" type="text/html" href="https://wicri-demo.istex.fr/Wicri/Base131/fr/index.php?title=Module:Wikidata/Outils&amp;diff=1401&amp;oldid=prev"/>
		<updated>2020-12-28T09:45:29Z</updated>

		<summary type="html">&lt;p&gt;1 révision importée&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version du 28 décembre 2020 à 09:45&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;fr&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Aucune différence)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Jacques Ducloy</name></author>
		
	</entry>
	<entry>
		<id>https://wicri-demo.istex.fr/Wicri/Base131/fr/index.php?title=Module:Wikidata/Outils&amp;diff=1400&amp;oldid=prev</id>
		<title>Jacques Ducloy : Page créée avec « --Fonctions élémentaires de gestion des snaks Wikidata local p = {} p.i18n = require &quot;Module:Wikidata/I18n&quot; local defaultlang = mw.getContentLanguage():getCode()  functi... »</title>
		<link rel="alternate" type="text/html" href="https://wicri-demo.istex.fr/Wicri/Base131/fr/index.php?title=Module:Wikidata/Outils&amp;diff=1400&amp;oldid=prev"/>
		<updated>2017-06-18T21:30:31Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « --Fonctions élémentaires de gestion des snaks Wikidata local p = {} p.i18n = require &amp;quot;Module:Wikidata/I18n&amp;quot; local defaultlang = mw.getContentLanguage():getCode()  functi... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--Fonctions élémentaires de gestion des snaks Wikidata&lt;br /&gt;
local p = {}&lt;br /&gt;
p.i18n = require &amp;quot;Module:Wikidata/I18n&amp;quot;&lt;br /&gt;
local defaultlang = mw.getContentLanguage():getCode()&lt;br /&gt;
&lt;br /&gt;
function p.translate(str, rep1, rep2)&lt;br /&gt;
	str = p.i18n[str] or str&lt;br /&gt;
	if rep1 then&lt;br /&gt;
		str = str:gsub('$1', rep1)&lt;br /&gt;
	end&lt;br /&gt;
	if rep2 then&lt;br /&gt;
		str = str:gsub('$2', rep2)&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.snaktype(snak)&lt;br /&gt;
	return snak.snaktype&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
function p.isSpecial(snak)&lt;br /&gt;
	return (snak.snaktype ~= 'value')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isValue(snak)&lt;br /&gt;
	return (snak.snaktype == 'value')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getId(snak)&lt;br /&gt;
	if p.isValue(snak) then&lt;br /&gt;
		return 'Q' .. snak.datavalue.value['numeric-id']&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNumericId(snak)&lt;br /&gt;
	if p.isValue(snak) then&lt;br /&gt;
		return snak.datavalue.value['numeric-id']&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getMainId(claim)&lt;br /&gt;
	return p.getId(claim.mainsnak)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.EntityId(entity)&lt;br /&gt;
	if type(entity) == 'string' then&lt;br /&gt;
		return entity&lt;br /&gt;
	end&lt;br /&gt;
	return entity.id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getValue(snak)&lt;br /&gt;
	return snak.datavalue.value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- function that returns true if the &amp;quot;qid&amp;quot; parameter is the qid &lt;br /&gt;
-- of the item that is linked to the calling page&lt;br /&gt;
function p.is_page_of_qid(qid) &lt;br /&gt;
	local entity_on_its_page = false&lt;br /&gt;
	local self_entity = mw.wikibase.getEntity()&lt;br /&gt;
	if self_entity ~= nil and qid == p.EntityId(self_entity) then&lt;br /&gt;
		entity_on_its_page = true&lt;br /&gt;
	end&lt;br /&gt;
	return entity_on_its_page&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatError( key , category, debug)&lt;br /&gt;
    if debug then&lt;br /&gt;
        return error(p.i18n[key] or key)&lt;br /&gt;
    end&lt;br /&gt;
    if category then&lt;br /&gt;
        return &amp;quot;[[Category:&amp;quot; .. category .. &amp;quot;|&amp;quot; .. (key or &amp;quot;&amp;quot;) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        return &amp;quot;[[Catégorie:Page avec un problème de codage Wikidata|&amp;quot; .. (key or &amp;quot;&amp;quot;) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.addcat(cat, sortkey)&lt;br /&gt;
	if sortkey then&lt;br /&gt;
		return  '[[Category:' .. cat .. '|' .. (sortkey or '') .. ']]'&lt;br /&gt;
	end&lt;br /&gt;
	return '[[Category:' .. cat  .. ']]'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getEntity( val ) &lt;br /&gt;
	if type(val) == 'table' then&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
	if val == '-' then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if val == '' then&lt;br /&gt;
		val = nil&lt;br /&gt;
	end&lt;br /&gt;
	return mw.wikibase.getEntityObject(val)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitStr(val) -- transforme en table les chaînes venant du Wikitexte qui utilisent des virgules de séparatin&lt;br /&gt;
	if type(val) == 'string' then&lt;br /&gt;
		val = mw.text.split(val, &amp;quot;,&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isHere(searchset, val)&lt;br /&gt;
	for i, j in pairs(searchset) do&lt;br /&gt;
		if val == j then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.alreadyHere(searchset, val) -- obsolète&lt;br /&gt;
	return p.isHere(searchset, val)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getEntityPagename(entity)&lt;br /&gt;
	if (not entity) then&lt;br /&gt;
		return nil -- ou option de gestion des erreurs ?&lt;br /&gt;
	end&lt;br /&gt;
	local name =&amp;quot;d:&amp;quot;&lt;br /&gt;
	if entity[&amp;quot;type&amp;quot;] == &amp;quot;property&amp;quot; then&lt;br /&gt;
		name = &amp;quot;d:Property:&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return name .. entity.id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getEntityPagename(entity)&lt;br /&gt;
	if (not entity) then&lt;br /&gt;
		return nil -- ou option de gestion des erreurs ?&lt;br /&gt;
	end&lt;br /&gt;
	local name =&amp;quot;d:&amp;quot;&lt;br /&gt;
	if entity[&amp;quot;type&amp;quot;] == &amp;quot;property&amp;quot; then&lt;br /&gt;
		name = &amp;quot;d:Property:&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return name .. entity.id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wikidataLink(entity)&lt;br /&gt;
	local name =':d:'&lt;br /&gt;
	&lt;br /&gt;
	if type(entity) == 'string' then&lt;br /&gt;
		if entity:match(&amp;quot;P[0-9+]&amp;quot;) then&lt;br /&gt;
			entity = &amp;quot;Property:&amp;quot; .. entity&lt;br /&gt;
		end&lt;br /&gt;
		return name .. entity&lt;br /&gt;
	elseif type(entity) == 'table' then&lt;br /&gt;
		if entity[&amp;quot;type&amp;quot;] == &amp;quot;property&amp;quot; then&lt;br /&gt;
			name = &amp;quot;:d:Property:&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		return name .. entity.id&lt;br /&gt;
	elseif type(entity) == nil then&lt;br /&gt;
		return formatError('entity-not-found')&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.siteLink(entity, project, lang)&lt;br /&gt;
	-- returns 3 values: a sitelink (with the relevant prefix) a project name and a language&lt;br /&gt;
	lang = lang or defaultlang&lt;br /&gt;
	if (type(project) ~= 'string') then&lt;br /&gt;
		project = 'wiki'&lt;br /&gt;
	end&lt;br /&gt;
	project = project:lower()&lt;br /&gt;
	if project == 'wikipedia' then&lt;br /&gt;
		project = 'wiki'&lt;br /&gt;
	end&lt;br /&gt;
	if type(entity) == 'string' and (project == 'wiki') and ( (not lang or lang == defaultlang) ) then -- évite de charger l'élément entier&lt;br /&gt;
		return  mw.wikibase.sitelink(entity), 'wiki', defaultlang&lt;br /&gt;
	end&lt;br /&gt;
	if project == 'wikidata' then&lt;br /&gt;
		return wikidataLink(entity), 'wikidata'&lt;br /&gt;
	end&lt;br /&gt;
	local projects = {&lt;br /&gt;
		-- nom = {préfixe sur Wikidata, préfix pour les liens sur Wikipédia, ajouter préfixe de langue}&lt;br /&gt;
		wiki = {'wiki', nil, true}, -- wikipedia&lt;br /&gt;
		commons = {'commonswiki', 'commons', false},&lt;br /&gt;
		commonswiki = {'commonswiki', 'commons', false},&lt;br /&gt;
		wikiquote = {'wikiquote', 'q', true},&lt;br /&gt;
		wikivoyage = {'wikivoyage', 'voy', true},&lt;br /&gt;
		wikibooks = {'wikibooks', 'b', true},&lt;br /&gt;
		wikinews = {'wikinews', 'n', true},&lt;br /&gt;
		wikiversity = {'wikiversity', 'v', true},&lt;br /&gt;
		wikisource = {'wikisource', 's', true},&lt;br /&gt;
		-- meta&lt;br /&gt;
		-- mediawiki&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	entity = p.getEntity(entity)&lt;br /&gt;
	if not entity then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local projectdata = projects[project:lower()]&lt;br /&gt;
	if not projectdata then -- sinon, on peut avoir des liens du type &amp;quot;enwiki&amp;quot; plutôt que &amp;quot;en&amp;quot; et lang = &amp;quot;wikipedia'&lt;br /&gt;
		for k, v in pairs(projects) do&lt;br /&gt;
			if project:match( k .. '$' ) &lt;br /&gt;
				and mw.language.isKnownLanguageTag(project:sub(1, #project-#k))&lt;br /&gt;
			then&lt;br /&gt;
				lang = project:sub(1, #project-#k)&lt;br /&gt;
				projectdata = k&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if not mw.language.isKnownLanguageTag(lang) then&lt;br /&gt;
			return p.formatError('invalid project code: ' .. (project or '?'))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not projectdata then&lt;br /&gt;
		return p.formatError('invalid project code: ' .. (project or '?'))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local linkcode = projectdata[1]&lt;br /&gt;
	local prefix = projectdata[2]&lt;br /&gt;
	local multiversion = projectdata[3]&lt;br /&gt;
	if multiversion then&lt;br /&gt;
		linkcode = lang .. linkcode&lt;br /&gt;
	end&lt;br /&gt;
	local link = entity:getSitelink(linkcode)&lt;br /&gt;
	if not link then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if prefix then&lt;br /&gt;
		link = prefix .. ':' .. link&lt;br /&gt;
	end&lt;br /&gt;
	if multiversion then&lt;br /&gt;
		link = ':' .. lang .. ':' .. link&lt;br /&gt;
	end&lt;br /&gt;
	return link, project, lang&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- add new values to a list, avoiding duplicates&lt;br /&gt;
function p.addnewvalues(old, new)&lt;br /&gt;
	if not new then&lt;br /&gt;
		return old&lt;br /&gt;
	end&lt;br /&gt;
	for _, j in pairs(new) do&lt;br /&gt;
		if not p.isHere(old, j) then&lt;br /&gt;
			table.insert(old, j)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return old&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jacques Ducloy</name></author>
		
	</entry>
</feed>