Modulo:Controllo Wikidata

Versione del 4 giu 2016 alle 17:23 di Rotpunkt (discussione | contributi) (Ha protetto "Modulo:Controllo Wikidata": Template o modulo usato in maniera estensiva ([Modifica=Consentito solo agli amministratori] (infinito) [Spostamento=Consentito solo agli amministratori] (infinito)))

Modulo che implementa il template {{Controllo Wikidata}}.


--[[
* Modulo che implementa il template Controllo Wikidata.
]]--
 
require('Modulo:No globals')
 
local getArgs = require('Modulo:Arguments').getArgs
local mWikidata = require('Modulo:Wikidata')
local p = {}
 
local function getWikidataCategory(wdval, userval, catprefix, args)
	local genletto = { ms = 'letto', mp = 'letti', fs = 'letta', fp = 'lette' }
	local cat
 
	if userval then
		if not wdval then
			cat = string.format('%s assente su Wikidata', catprefix)
		elseif wdval == userval then
			cat = args.uguale == 'sì' and string.format('%s uguale a Wikidata', catprefix) or nil
		elseif args.diff ~= 'no' then
			cat = string.format('%s differente da Wikidata', catprefix)
		end
	elseif wdval then
		cat = string.format('%s %s da Wikidata', catprefix, args.genere and genletto[args.genere] or 'letto')
	end
 
	return cat and string.format('[[Categoria:%s]]', cat)
end
 
-- Per l'utilizzo da altro modulo
function p._main(args)
	local wdprop, userval, catprefix = args[1], args[2], args[3]
	local wdval	
 
	-- namespace 0, proprietà Wikidata e prefisso categoria obbligatori
	if mw.title.getCurrentTitle().namespace ~= 0 or (args.id ~= 'no' and not wdprop) or not catprefix then
		return nil
	end

	-- con id=no il primo parametro non è più trattato come l'ID di una proprietà Wikidata
	-- ma come una normale stringa da confrontare con il secondo parametro
	if args.id == 'no' then
		wdval = wdprop
	else
		wdval = mWikidata._getProperty({
			wdprop,
			showunit = args['unità'] ~= 'no',
			formatnum = args['unità'] ~= 'no'
		})
	end
 
	return getWikidataCategory(wdval, userval, catprefix, args)
end
 
-- Entry-point per il template {{Controllo Wikidata}}
function p.main(frame)
	return p._main(getArgs(frame, {parentOnly = true}))
end
 
return p