Modul:Tiårsnavigasjon

Fra Wikisida.no
Sideversjon per 23. sep. 2025 kl. 07:38 av Wikisida (diskusjon | bidrag) (Én sideversjon ble importert)
(diff) ← Eldre sideversjon | Nåværende sideversjon (diff) | Nyere sideversjon → (diff)
Hopp til navigering Hopp til søk

Dokumentasjon for denne modulen kan opprettes på Modul:Tiårsnavigasjon/dok

local p = {}
local fkrText = 'f.Kr.'
local fvtText = 'fvt.'
local aareneText = '-årene'

function p.tiaar (frame) 
	local tall, fvt, aarstall
	local malparameter = frame:getParent().args
	if malparameter[1] ~= nil then
		local sammensatt = {}
		for i, v in pairs(malparameter) do
		    -- process each index-value pair
		    table.insert(sammensatt, malparameter[i])
		end
		sammensatt = table.concat(sammensatt)
		tall = HentTallFraStreng(sammensatt)
		if HentFvtFraStreng(sammensatt) then
			fvt = true
		end
	end
	if frame.args["aar"] then
		tall = HentTallFraStreng(frame.args["aar"])
	elseif tall == nil then
		tall = HentTallFraTittel()
	end
	if frame.args["fvt"] then
		fvt = true
	elseif not fvt then
		fvt = HentFvtFraTittel(frame)
	end
	if fvt then
		aarstall = "[[" .. tall .. aareneText .. " " .. fkrText .. "|"  .. tall .. aareneText .. " " .. fvtText .. "]]"
	else
		aarstall = "[[" .. tall .. aareneText .. "|"  .. tall .. aareneText .. " " .. "]]"
	end
	-- frame:expandTemplate:{title='flatlist', args={Aarliste(tall, fvt)}
	-- NaboAarene(tall, fvt)
	return frame:expandTemplate{title='Navboks', args={navn = 'Tiår', tittel = aarstall, over = NaboAarene(tall, fvt), innhold = frame:expandTemplate{title='flatlist', args={Aarliste(tall, fvt)}}}}
end

function HentTallFraTittel()
	local tittel = HentTallFraStreng(tostring(mw.title.getCurrentTitle()))
	return tittel
end

function HentFvtFraTittel()
	local tittel = tostring(mw.title.getCurrentTitle())
	if string.match(tittel, '%l%p%u%l%p') then
		return true
	else
		return false
	end
end

function HentTallFraStreng(streng)
	-- henter første tallgruppe fra angitt streng
	local resultat = string.match(streng, '%d+')
	if resultat ~= nil then
		return resultat
	else
		return 0
	end
end

function HentFvtFraStreng(streng) 
	if string.match(streng, '%D+') then
		return true
	else
		return false
	end
end

function NaboAarene(nummer, kris)
	-- ◄ 0-årene fvt. – 10-årene ►
	local forrige,neste
	if (nummer == "0" and kris) then
		neste = "[[0" .. aareneText .. "|0"   .. aareneText .. "]]"
		forrige = "[[10" .. aareneText .. " " .. fkrText .. "|10" .. aareneText .. " " .. fvtText .. "]]"
	elseif (nummer == "0" and kris == false) then
		neste = "[[10" .. aareneText .. "|10"   .. aareneText .. "]]"
		forrige = "[[0" .. aareneText .. " " .. fkrText .. "|0" .. aareneText .. " " .. fvtText .. "]]"
	else
		if kris == true then
			neste = "[[" .. nummer+10 .. aareneText .. " " .. fkrText .. "|" .. nummer+10 .. aareneText .. " " .. fvtText .. "]]"
			forrige = "[[" .. nummer-10  .. aareneText .. " " .. fkrText .. "|" .. nummer-10 .. aareneText .. " " .. fvtText .. "]]"
		else
			neste = "[[" .. nummer+10 .. aareneText .. "|" .. nummer+10 .. aareneText .. "]]"
			forrige = "[[" .. nummer-10  .. aareneText .. "|" .. nummer-10 .. aareneText .. "]]"
		end
	end
	return '◄ ' .. forrige .. ' – ' .. neste .. ' ►'
end

function Aarliste(nummer, kris)
	local listeMedAar = {}
	local lenkedeAar = {}
	if nummer == 0  then
		listeMedAar = {1, 2, 3, 4, 5, 6, 7, 8, 9}
	else
		for t = 0, 9, 1 do
			table.insert(listeMedAar, nummer+t)
		end
	end
	if kris then
		table.sort(listeMedAar, function(a, b) return a > b end)
		for t = 1, #listeMedAar, 1 do
			listeMedAar[t] = "[[" .. listeMedAar[t] .. " " .. fkrText .. "|" .. listeMedAar[t] .. " " .. fvtText .. "]]" 
		end
	else
		for t = 1, #listeMedAar, 1 do
			listeMedAar[t] = "[[" .. listeMedAar[t] .. "|" .. listeMedAar[t] .. "]]" 
		end
	end
	return '\n*' .. table.concat(listeMedAar, '\n*')
end

return p