Aller au contenu

Module:WikidataCheck

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 26 septembre 2014 à 15:25 et modifiée en dernier par Zolo (discuter | contributions) (utilisation de module:wikidata pour pouvoir mieux définir les requêtes, tentative d'isolement des fonctions frames, création d'une fonction checkedlink qui permet également de créer un lien externe). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[créer] [purger]
local p = {}

local function categorize(wikipediavalue, wikidatavalue, catbase)
    if not wikidatavalue then
        return "[[Category:" .. catbase .. " absent de Wikidata]]"
    end
    if not wikipediavalue then
         return "[[Category:" .. catbase .. " fourni par Wikidata]]"
	end
	if wikipediavalue == wikidatavalue then
        return "[[CCategory:" .. catbase .. " identique sur Wikidata]]" -- yay!
	end
	return "[[Category:" .. catbase .. " différent sur Wikidata]]" -- needs human review :(
end

local function wikidatacheck(wikipediavalue, wikidatavalue, catbase, namespaces)
    -- exit if cat disabled in this namesapce
    local ok = false -- one-way flag to check if we're in a good namespace
    local ns = mw.title.getCurrentTitle().namespace
    for v in mw.text.gsplit( namespaces, ",", true) do
        if tonumber(v) == ns then
            ok = true
        end
    end
    if not ok then -- not in one of the approved namespaces
        return ""
    end
	return categorize(wikipediavalue, wikidatavalue, catbase)
end

function p.wikidatacheck(frame)
	local args= frame.args
	local namespaces = args.namespaces
	local wikipediavalue = args.value
	local property = args.property
	local catbase = args.category
	local wikidatavalue = require('Module:Wikidata')._formatStatements({item= item, property=property})
	return wikidatacheck(wikipediavalue, wikidatavalue, catbase, namespaces)
end

function p.checkedlink(frame)
	local args = frame.args
	local prop = args.property
	local item = args.item
	local namespaces = args.namespaces or '0'
	local catname = args.category
	local wikipediavalue = args.id
	local wikidatavalue = wikidataval(prop, item)
	local val = wikipediavalue or wikidatavalue
	if not val then
		return nil
	end
	local link = args.url .. val
	local realcat = categorize(wikipediavalue, wikidatavalue)
	local title = args.title or 'entrée ' .. val
	local accessdate = args.accessdate
	local website = ''
	if args.website then
		website = ' sur le site ' .. website
	end
	local accessdate = ''
	if args.accessdate then
		accessdate = ', consulté le ' .. accessdate
	end
	return '[' .. link .. ' ' .. args.title .. ']' .. website .. accessdate .. '.', realcat
end

return p