Module:WikidataCheck

De Wikonsult
Révision datée du 22 mars 2016 à 00:34 par w.fr>Zolo
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

La documentation pour ce module peut être créée à Module:WikidataCheck/Documentation

local p = {}
local wd = require "Module:Wikidata"
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 "[[Category:" .. 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 = wd.formatStatements({item= item, property=property})
	return wikidatacheck(wikipediavalue, wikidatavalue, catbase, namespaces)
end

function p.checkedlink(frame)
	local args = {}
	for i, j in pairs(frame.args) do
		if j ~= '' then args[i] = j end
	end
	
	local property = args.property
	local entity =args.item
	local namespaces = args.namespaces or '0'
	local wikipediavalue = args.id
	local basecatname = args.category
	local url = args.url

	local sitename = args.website
	if sitename then
		sitename = ' sur ' .. sitename
	else 
		sitename = ''
	end
	
	local accessdate = args.accessdate
	if accessdate then
		accessdate = ', consulté le ' .. accessdate
	else 
		accessdate = ''
	end
	
	local wikidatavalue	
	if property then 
		wikidatavalue = wd.formatStatements({entity =item, property = property})
	end
	
	local val = wikipediavalue or wikidatavalue
	if not val then
		return nil
	end
	local title = args.title
	if not title then
		title = 'entrée '.. val
	end	

	local link = mw.ustring.gsub(url, '$1', val)

	local realcat = ''
	if property and basecatname then
		realcat = categorize(wikipediavalue, wikidatavalue, basecatname)
	end

	return '[' .. link .. ' ' .. title .. ']' .. sitename .. accessdate .. '.', realcat
end

return p