Modulo:Intestazione

La documentazione per questo modulo può essere creata in Modulo:Intestazione/man

local c = require('Modulo:Common')
local a = require('Modulo:Autore')
local d = require('Modulo:Date')

local lang = mw.getContentLanguage()
local p = {}

function p.linkAutore(frame)
	nomi = frame:getParent().args[1]
	local links = {}
	for nome in string.gmatch(nomi, '([^/]+)') do
		nomeStripped = mw.text.trim(nome):gsub(" %(.*%)", "")
		table.insert(links, '[[Autore:' .. nome .. '|' .. nomeStripped .. ']]')
	end
	return c.concat(links, ', ')
end

-- controlla che la data di composizione sia compresa tra le date di nascita e morte dell'autore
function p.checkDateAutore(frame)
	nomi = frame.args[1]
	dataComposizione = frame.args[2] or ''
	mw.log('Data composizione: '..dataComposizione)
	dataComp = d.absoluteDate(dataComposizione)
	if nomi and dataComp then
		ok = false
		i = 0
		for nome in string.gmatch(nomi, '([^/]+)') do
			i = i + 1
			mw.log('Autore: ' .. nome)
			qid = mw.wikibase.getEntityIdForTitle('Autore:' .. nome)
			autoreItem = mw.wikibase.getEntity(qid)
			dati = a.getDatiAutore(autoreItem)
			
			mw.log('anno morte autore: '..(dati.annoMorte or ''))
			mw.log('anno nascita autore: '..(dati.annoNascita or ''))
			
			annoMorte = d.absoluteDate(dati.annoMorte)
			annoNascita = d.absoluteDate(dati.annoNascita)
			
			if annoMorte then
				if annoMorte >= dataComp then
					ok = true
				end
			elseif annoNascita and dati.isHuman then
				-- se non sappiamo quando e' morto, supponiamo sia vissuto 100 anni
				if dati.annoNascita + 100 >= dataComp then
					ok = true
				end
			else
				ok = true
			end
		end
		if not ok and i > 0 then
			return '[[Categoria:Data di composizione da controllare]]'
		end
	end
end

function p.labelCapitolo(link, cap)
	if c.startsWith(cap, '../') or c.startsWith(cap, '/') then
		cap = mw.getCurrentFrame():callParserFunction('#rel2abs', cap)
	end
	cap = cap:gsub('^[^/]*/', '')		-- togli ../ e / iniziali
	local _, count = cap:gsub('/', '')
	mw.log('count: '..count)
	while count > 1 do
		cap = cap:gsub('^[^/]+/', '') 	-- lasciamo massimo uno /
		count = count -1
	end
	mw.log('count: '..count)
	if count > 0 and link == '../' then
		cap = cap:gsub('^[^/]+/', '')	-- il link punta al livello più sopra, quindi lasciamo solo la parte finale del titolo
	end
	
	return link, c.stripTitolo2(cap:gsub('/', ' - '))
end

function p.capitolo(frame)
	local precLink, prec = p.labelCapitolo(c.splitLink(frame.args[1]))
	local succLink, succ = p.labelCapitolo(c.splitLink(frame.args[2]))

	return c.template('CapitoloNuovo', { NomePaginaCapitoloPrecedente = precLink, CapitoloPrecedente = prec, NomePaginaCapitoloSuccessivo = succLink, CapitoloSuccessivo = succ })
end

return p