Hopp til innhold

Modul:Flagg

Fra Wikipedia, den frie encyklopedi
Sideversjon per 5. sep. 2016 kl. 13:23 av Cocu (diskusjon | bidrag) (rv)

Mal:Dokumentasjon

local p = {}
 
local lang = mw.getContentLanguage()
function p.flag( 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:Flagg/Altnavn")
	local ALTname = ALT[frame.args[1]]
	if ALTname == nil or ALTname == "" then
		ALTname = ""
	else
		frame.args[1] = mw.text.trim(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:Flagg/Data")
 	local datapage = datap.areaname(frame)
 
	-- velger størrelsen på flagget
	local size;
	if frame.args[6] == nil or frame.args[6] == "" then 
		size = "22x18px"
	elseif frame.args[6] ~= "" then
		size = frame.args[6]
	end
 
	-- hvis det ikke er angitt flagg for ønsket område, vises et grått flagg
	DataPage = datapage.flagdata[frame.args[1]]
	if DataPage == nil or DataPage == "" then
 		return "[[Fil:Flag of None.svg|" .. size .. "|lenke=" .. frame.args[1] .. "]]<sup>[[Modul:Flagg/Data/nye|[?]]][[Kategori:Sider som inneholder uregistrerte flagg]]</sup>"
	end
	if DataPage.defflag == nil or DataPage.defflag == "" then
		if DataPage.weapon == nil or DataPage.weapon == "" then
 			return "[[Fil:Flag of None.svg|" .. size .. "|lenke=" .. frame.args[1] .. "]]<sup>[[Modul:Flagg/Data/nye|[?]]][[Kategori:Sider som inneholder uregistrerte flagg]]</sup>"
 		end
	end
 
	-- Henter ut de nødvendige data fra datasiden, basert på angitt parameter
	local FlagName;
	FlagVar = frame.args[2]
	flagdata = DataPage
	if frame.args[1] ~= "" then
		if FlagVar == nil or FlagVar == "" or FlagVar == "lenke" then
			FlagName = flagdata['defflag']
		elseif tostring(FlagVar) == flagdata['histyeara'] then
			FlagName = flagdata['histflaga']
		elseif tostring(FlagVar) == flagdata['histyearb'] then
			FlagName = flagdata['histflagb']
		elseif tostring(FlagVar) == flagdata['histyearc'] then
			FlagName = flagdata['histflagc']
		elseif FlagVar:match("^%u%u.%d%d%d%d$") then
			n = 1
			repeat
				if not flagdata['OLyear'..n] then
					FlagName = flagdata['defflag']
				elseif flagdata['OLyear'..n] ~= tostring(FlagVar) then
					FlagName = flagdata['defflag']
				end
				if flagdata['OLyear'..n] then
					if tostring(FlagVar) == flagdata['OLyear'..n] then
						FlagName = flagdata['OLflag'..n]
						break
					end
				end
				n=n+1
			until not flagdata['OLyear'..n]
		elseif FlagVar:match("^%d%d%d%d$") or FlagVar:match("^%d%d%d$") or FlagVar:match("^%d%d$") then
			i = 1
			repeat
				if not flagdata['histyear'..i] then
					FlagName = flagdata['defflag']
				elseif flagdata['histyear'..i] < tonumber(FlagVar) then
					FlagName = flagdata['defflag']
				end
				if flagdata['histyear'..i] then
					Y = flagdata['histyear'..i]
					F = flagdata['histflag'..i]
					if tonumber(FlagVar) <= Y then
						FlagName = F
						break
					end
				end
				i=i+1
			until not flagdata['histyear' .. i]
		elseif FlagVar == "OL" then
			FlagName = flagdata["OLflag1"]
		elseif FlagVar ~= "" then
			FlagName = flagdata[FlagVar]
		else
			FlagName = flagdata['defflag']
		end
	else
		return "[[Fil:Flag of None.svg|" .. size .. "|lenke=" .. frame.args[1] .. "]]<sup>[[" .. DataPage .. "|[opprett]]][[Kategori:Sider som inneholder uregistrerte flagg]]</sup>"
	end
	
	-- Hvis det ikke er angitt noen form for flaggvariant, vises standard flagg
	if FlagName == nil then
		FlagName = DataPage.defflag
	else
		FlagName = FlagName
	end
	if FlagName == nil then
		return "[[Fil:Flag of None.svg|" .. size .. "|lenke=" .. frame.args[1] .. "]]<sup>[[Modul:Flagg/Data/nye|[?]]][[Kategori:Sider som inneholder uregistrerte flagg]]</sup>"
	end
 
	-- avgjør hvilken side som flagget, 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 mw.text.trim(frame.args[4]) ~= "" or mw.text.trim(frame.args[4]) ~= nil then
		PageLink = mw.text.trim(frame.args[4])
	else
		PageLink = Name
	end
 
	local FlagLink
 	if frame.args[8] == "" or frame.args[8] == nil then
 		FlagLink = PageLink
 	else
 		FlagLink = mw.text.trim(frame.args[8])
 	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 mw.text.trim(frame.args[5]) == "" or mw.text.trim(frame.args[5]) == nil then
		DispName = DisplayName
	elseif mw.text.trim(frame.args[5]) ~= "" or mw.text.trim(frame.args[5]) ~= nil then
		DispName = mw.text.trim(frame.args[5])
	else
		DispName = Name
	end
 
	-- Avgjør om det skal vises lenke
	local LinkOut;
	if mw.text.trim(frame.args[2]) ~= "lenke" and mw.text.trim(frame.args[3]) ~= "lenke" and frame.args[4] == "" and frame.args[5] == "" then
		LinkOut = ""
	else
		if frame.args[9] == "h" then
			LinkOut = "[[" .. PageLink .. "|" .. DispName .. "]]&nbsp;"
		else
			LinkOut = "&nbsp;[[" .. PageLink .. "|" .. DispName  .. "]]"
		end
	end
 
	local LinkRes;
	if mw.text.trim(frame.args[7]) == nil or mw.text.trim(frame.args[7]) == "" then
		if LinkOut ~= nil then
			LinkRes = LinkOut
		elseif LinkOut == nil or LinkOut == "" then
			LinkRes = ""
		end
	elseif mw.text.trim(frame.args[7]) ~= "" then
		if mw.text.trim(frame.args[9]) == "h" then
			LinkRes = mw.text.trim(frame.args[7]) .. '&nbsp;'
		else
			LinkRes = '&nbsp;' .. mw.text.trim(frame.args[7])
		end
	end
 
	-- border?
 
	local border = DataPage.border
	if border == nil then
		border = "border"
	elseif border == "" then
		border = ""
	else
		border = DataPage.border
	end
 
	if frame.args[9] == "h" then
		result = LinkRes .. "[[Fil:" .. FlagName .. "|" .. size .. "|" .. border .. "|lenke=" .. FlagLink .. "]]"
	else
		result = "[[Fil:" .. FlagName .. "|" .. size .. "|" .. border .. "|lenke=" .. FlagLink .. "]]" .. LinkRes
	end
 
	return result
end
 
return p