Hopp til innhold

Modul:Våpenskjold

Fra Wikipedia, den frie encyklopedi

local p = {}
 
local lang = mw.getContentLanguage()
function p.coat_of_arms( frame )
 
 	-- 
	-- sjekker om området er angitt vha en ISO 3166-1 alfa-2 eller alfa-3-kode
	-- hvis det er det, og ISO-koden er registrert, finner den automatisk det fulle navnet
	local ISO = require("Modul:Land")
	local ISOname = ISO.ISO(frame)
	if ISOname == nil or ISOname == "" then
		ISOname = ""
	else
		frame.args[1] = ISOname
	end
 
	-- sjekker om området er angitt vha en alternativ skrivemåte
	-- hvis det er det, og den alternative skrivemåten er registrert, finner den automatisk riktig navn
	local ALT = require("Modul:Våpenskjold/Altnavn")
	local ALTname = ALT[frame.args[1]]
	if ALTname == nil or ALTname == "" then
		ALTname = ""
	else
		frame.args[1] = ALT[frame.args[1]]
	end
 
 	-- Henter ut nødvendige data fra undersider basert på første bokstav i områdets fulle navn
 	local datap = require("Modul:Våpenskjold/Data")
 	local datapage = datap.areaname(frame)
 
	-- velger størrelsen på våpenskjoldet
	local size;
	if frame.args[6] ~= "" then
		size = frame.args[6]
	elseif frame.args[6] == nil or frame.args[6] == "" then
		size = "20px"
	end
 
	-- hvis det ikke er angitt våpenskjold for ønsket område, vises et grått våpenskjold
	DataPage = datapage.coat_of_armsdata[frame.args[1]]
	if DataPage == nil or DataPage == "" then
 		return "[[Fil:Coats of arms of None.svg |" .. size .. "|lenke=" .. frame.args[1] .. "]]<sup>[[Modul:Våpenskjold/Data/nye|[?]]][[Kategori:Sider som inneholder uregistrerte våpenskjold]]</sup>"
	end
	if DataPage.coat_of_arms == nil or DataPage.coat_of_arms == "" then
		if DataPage.weapon == nil or DataPage.weapon == "" then
 			return "[[Fil:Coats of arms of None.svg |" .. size .. "|lenke=" .. frame.args[1] .. "]]<sup>[[Modul:Våpenskjold/Data/nye|[?]]][[Kategori:Sider som inneholder uregistrerte våpenskjold]]</sup>"
 		end
	end
 
	-- Henter ut nødvendige parametere fra datasiden
	Coat_Of_Arms = DataPage.coat_of_arms
	HistYear1 = DataPage.histyear1
	HistCoat_Of_Arms1 = DataPage.histcoat_of_arms1
	HistYear2 = DataPage.histyear2
	HistCoat_Of_Arms2 = DataPage.histcoat_of_arms2
	HistYear3 = DataPage.histyear3
	HistCoat_Of_Arms3 = DataPage.histcoat_of_arms3
	HistYear4 = DataPage.histyear4
	HistCoat_Of_Arms4 = DataPage.histcoat_of_arms4
	HistYear5 = DataPage.histyear5
	HistCoat_Of_Arms5 = DataPage.histcoat_of_arms5
 
	-- Henter ut de nødvendige data fra datasiden, basert på angitt parameter
	local Coat_Of_ArmsName;
	Coat_Of_ArmsVar = frame.args[2]	
	if frame.args[1] ~= "" then
		if Coat_Of_ArmsVar == nil or Coat_Of_ArmsVar == "" or Coat_Of_ArmsVar == "lenke" then
			Coat_Of_ArmsName = Coat_Of_Arms
		elseif HistYear1 then
			if tonumber(Coat_Of_ArmsVar) <= HistYear1 then
				Coat_Of_ArmsName = HistCoat_Of_Arms1
			elseif HistYear2 then
				if tonumber(Coat_Of_ArmsVar) <= HistYear2 then
					Coat_Of_ArmsName = HistCoat_Of_Arms2
				elseif HistYear3 then
					if tonumber(Coat_Of_ArmsVar) <= HistYear3 then
						Coat_Of_ArmsName = HistCoat_Of_Arms3
					elseif HistYear4 then
						if tonumber(Coat_Of_ArmsVar) <= HistYear4 then
							Coat_Of_ArmsName = HistCoat_Of_Arms4
						elseif HistYear5 then
							if tonumber(Coat_Of_ArmsVar) <= HistYear5 then
								Coat_Of_ArmsName = HistCoat_Of_Arms5
							end
						end
					end
				end
			end
		end
	else
		return "[[Fil:Coats of arms of None.svg |" .. size .. "|lenke=" .. frame.args[1] .. "]]<sup>[[Modul:Våpenskjold/Data/nye|[?]]][[Kategori:Sider som inneholder uregistrerte våpenskjold]]</sup>"
	end
 
	-- Hvis det ikke er angitt noen form for våpenskjoldvariant, vises standard våpenskjold
	if Coat_Of_ArmsName == nil then
		Coat_Of_ArmsName = Coat_Of_Arms
	else
		Coat_Of_ArmsName = Coat_Of_ArmsName
	end
	if Coat_Of_ArmsName == nil then
		return "[[Fil:Coats of arms of None.svg |" .. size .. "|lenke=" .. frame.args[1] .. "]]<sup>[[Modul:Våpenskjold/Data/nye|[?]]][[Kategori:Sider som inneholder uregistrerte våpenskjold]]</sup>"
	end
 
	-- avgjør hvilken side som våpenskjoldet, og evt. synlig lenke, skal lenke til
	local LinkedPage = DataPage.pagelink
	local Name = DataPage.name
 
	if LinkedPage == nil then
		LinkedPage = Name
	else
		LinkedPage = LinkedPage
	end
 
	local PageLink;
	if frame.args[4] == "" or frame.args[4] == nil then
		PageLink = LinkedPage
	elseif frame.args[4] ~= "" or frame.args[4] ~= nil then
		PageLink = frame.args[4]
	else
		PageLink = Name
	end
 
	-- hva skal vises?
	local DisplayName = DataPage.dispname
 
	if DisplayName == nil then
		DisplayName = Name
	else
		DisplayName = DisplayName
	end
 
	-- Hvilken lenketekst skal vises?
	local DispName;
	if frame.args[5] == "" or frame.args[5] == nil then
		DispName = DisplayName
	elseif frame.args[5] ~= "" or frame.args[5] ~= nil then
		DispName = frame.args[5]
	else
		DispName = Name
	end
 
	-- Avgjør om det skal vises lenke
	local LinkOut;
	if frame.args[2] ~= "lenke" and frame.args[3] ~= "lenke" and frame.args[4] == "" and frame.args[5] == "" then
		LinkOut = ""
	else
		LinkOut = "&nbsp;[[" .. PageLink .. "|" .. DispName  .. "]]"
	end
 
	local LinkRes;
	if frame.args[7] ~= "" then
		LinkRes = '&nbsp;' .. frame.args[7]
	elseif frame.args[7] == "" then
		if LinkOut ~= nil then
			LinkRes = LinkOut
		elseif LinkOut == nil or LinkOut == "" then
			LinkRes = ""
		end
	end
 
	-- border?
 
	local border = DataPage.border
	if border == nil or border == "" then
		border = "frameless"
	else
		border = DataPage.border
	end
 
	result = "[[Fil:" .. Coat_Of_ArmsName .. "|" .. size .. "|" .. border .. "|lenke=" .. PageLink .. "]]" .. LinkRes
 
	return result
end
 
return p