Mòdulu:Mmàggini sinòtticu

La ducumintazzioni di stu mòdulu si pò criari nta Mòdulu:Mmàggini sinòtticu/doc

--[[
* Modulo che implementa il template Immagine sinottico.
]]--

require('strict')

local getArgs = require('Mòdulu:Arguments').getArgs
local mWikidata = require('Mòdulu:Wikidata')
local catCompatibile = '[[Catigurìa:Sinòttici cu mmàggini furmattati a manu]]'
local catNonCompatibile = '[[Catigurìa:Sinòttici cu mmàggini cu furmattazzioni superchiu]]'
local catDidascalia = '[[Catigurìa:Vuci cû mudeḍḍu Mmàggini sinòtticu cu didascalìa a manu e mmàggini pigghiata di Wikidata]]'
local p = {}

local function formatImage(file, args)
	local dim = args["grannizza utenti"] and
				math.min(args["grannizza utenti"], args["grannizza max"] or args.grannizza or 260) or
				(args.grannizza or 260)
	return string.format('[[File:%s|frameless|center|%sx%spx%s%s]]',
						  file, dim, args["grannizza virticali"] or 300,
						  args.alt and '|alt=' .. args.alt or '',
						  args.discrizzioni and '|' .. args.discrizzioni or '')
end

-- Per l'utilizzo da altro modulo
function p._main(args)
	local userval, wdval, ret

	-- evita letture indesiderate da wikidata
	if args[1] == 'no' then return '' end

	-- controllo quadre in eccesso
	if args[1] and args[1]:sub(1, 1) == '[' then
		local ns0 = mw.title.getCurrentTitle().namespace == 0
		-- con args["cumpatìbbili"] restituisce direttamente args[1] e args[2]
		if args["cumpatìbbili"] then
			local cat = ns0 and catCompatibile or ''
			return args[1] .. (args[2] and ('<br />' .. args[2]) or '') .. cat
		elseif ns0 then
			ret = catNonCompatibile
		end
	end

	args.grannizza = tonumber(args.grannizza)
	args["grannizza max"] = tonumber(args["grannizza max"])
	args["grannizza utenti"]	= args["grannizza utenti"] and tonumber(mw.text.split(args["grannizza utenti"], 'px')[1])
	args["grannizza virticali"] = tonumber(args["grannizza virticali"])

	-- valore utente e wikidata
	userval = args[1]
	if not userval and args['prupità'] then
		wdval = mWikidata._getProperty({ args['prupità'], n = 1 })
	end

	-- formatta l'immagine
	if userval or wdval then
		ret = (ret or '') .. formatImage(userval or wdval, args)
	end

	-- didascalia
	if userval then
		ret = ret .. (args[2] or (args["didascalìa pridifinuta"] or ''))
	elseif wdval then
		-- se l'immagine è letta da Wikidata la didascalia può essere ottenuta
		-- solo dal qualificatore P2096, altrimenti restituirà una categoria di errore
		ret = ret .. (mWikidata._getQualifier({ args['prupità'], 'P2096', includelang = 'scn', n = 1 }) or (args["didascalìa pridifinuta"] or ''))
	end

	return (ret or '') .. ((args[2] and wdval and not userval) and catDidascalia or '')
end

-- Funzione per il template {{Immagine sinottico}}
function p.main(frame)
	return p._main(getArgs(frame, { parentOnly = true }))
end

return p