Modulo:Controllo Wikidata

Versione del 4 giu 2016 alle 16:44 di Rotpunkt (discussione | contributi) (args.uguale)

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 wdval, userval, catprefix = args[1], args[2], args[3]
 
	-- namespace 0, proprietà Wikidata e prefisso categoria obbligatori
	if mw.title.getCurrentTitle().namespace ~= 0 or not wdval or not catprefix then
		return nil
	end
 
	if args.id ~= 'no' then
		wdval = mWikidata._getProperty({
			args[1],
			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