Module:Verìfica Wikidata

Documentation for this module may be created at Module:Verìfica Wikidata/doc

--[[
* Mòdulu chi implementat su template Verìfica Wikidata.
]]--
 
require('Module:No globals')
 
local getArgs = require('Module:Arguments').getArgs
local mWikidata = require('Module:Wikidata')
local p = {}

-- Ponet a cunfrontu duos documentos multimediales in Commons chene tènnere contu de underscores eventuales
local function compareCommonsMediaFile(name, name2)
	return name:gsub('_', ' ') == name2:gsub('_', ' ')
end

-- Confrontat duos URL chene tènnere contu de unu slash finale eventuale (petzi si est uno) e de su protocollu http/https
local function compareURL(url1, url2)
	local ret = false
	url1, url2 = url1:match('^https?://(.*)$'), url2:match('^https?://(.*)$')
	if url1 and url2 then
		local n, n2 = select(2, url1:gsub('/', '')), select(2, url2:gsub('/', ''))
		if n <= 1 and n2 <= 1 then
			ret = url1:gsub('/$', '') == url2:gsub('/$', '')
		else
			ret = url1 == url2
		end
	end
	return ret
end

local function getCategory(wdval, userval, args)
	local comparefunc = function(v1, v2) return v1 == v2 end
	local cat

	-- permitit de definire funtziones de cunfrontu pro propiedades dislindadas
	-- (o fintzas pro mèdiu de paràmetros eventuales)
	if mWikidata._getDatatype({ args[1] }) == 'documentu multimediale in Commons' then
		comparefunc = compareCommonsMediaFile
	elseif args[1] == 'P856' then
		comparefunc = compareURL
	end

	if userval then
		if not wdval then
			cat = string.format('%s ausente in Wikidata', args[1])
		elseif args.uguale ~= 'no' and comparefunc(wdval, userval) then
			cat =  string.format('%s uguale in Wikidata', args[1])
		elseif args.diff ~= 'no' then
			cat = string.format('%s diferente in Wikidata', args[1])
		end
	elseif wdval then
		cat = string.format('%s lèghida dae Wikidata', args[1])
	end
 
	return cat and string.format('[[%sCategoria:%s]]', args.debug and ':' or '', cat)
end
 
-- Pro s'impreu dae un'àteru mòdulu
function p._main(args)
	local wdprop, userval = args[1], args[2]
 
	-- namespace 0 e propiedade Wikidata obligatòrios
	if mw.title.getCurrentTitle().namespace ~= (tonumber(args.ns) or 0) or not wdprop then
		return nil
	end

	local wdval = mWikidata._getProperty({
		wdprop,
		unit     = args.unit,
		showunit = args.showunit,
		from     = args.debug and args.from
	})

	return getCategory(wdval, userval, args)
end
 
-- Funtzione pro su template {{Verìfica Wikidata}}
function p.main(frame)
	return p._main(getArgs(frame, { parentOnly = true }))
end
 
return p