Hopp til innhold

Modul:Flagg

Fra Wikipedia, den frie encyklopedi
Sideversjon per 6. sep. 2016 kl. 22:10 av Cocu (diskusjon | bidrag) (+)

Mal:Dokumentasjon

local getArgs = require('Modul:Arguments').getArgs

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

function p._areaname(frame, args)
	local args = getArgs(frame)
	-- Hvis ikke det er angitt noe argument 1, kan heller ikke flagget finnes
	if not frame.args[1] then
		return ''
	else
		areaname = mw.text.trim(frame.args[1])
	end
	
	-- Definerer hva som skal settes som områdenavn basert på input i argument 1
	if require("Modul:Flagg/Masterdata").flagdata[areaname] ~= nil then
		areaname = areaname
	elseif require("Modul:Flagg/Data/nye").flagdata[areaname] ~= nil then
		areaname = areaname
	elseif require("Modul:Flagg/Altnavn")[areaname] ~= nil then
		areaname = require("Modul:Flagg/Altnavn")[areaname]
	elseif require("Modul:Land/alfa3")[areaname] ~= nil then
		areaname = require("Modul:Land/alfa3")[areaname]
	elseif require("Modul:Land/alfa2")[areaname] ~= nil then
		areaname = require("Modul:Land/alfa2")[areaname]
	elseif require("Modul:Land/num")[areaname] ~= nil then
		areaname = require("Modul:Land/num")[areaname]
	else
		areaname = "Ukjent"
	end
	
	return areaname
end

function p._data(frame, args)
	local args = getArgs(frame)
	-- Henter ut nødvendige data fra undersider
	local areaname = p._areaname(frame, args)
	
	Data = require("Modul:Flagg/Masterdata").flagdata[areaname]
	if Data == nil or Data == "" then
 		return "Flag of None.svg"
	end
	
	if not frame.args[2] then
		return Data['defflag']
	elseif frame.args[2] == "lenke" then
		return Data['defflag']		
	end
	
	local FlagVar = mw.text.trim(frame.args[2])

	local FlagData = require("Modul:Flagg/Masterdata").flagdata[areaname]
	if tostring(FlagVar) == FlagData['histyeara'] then
		return FlagData['histflaga']
	elseif tostring(FlagVar) == FlagData['histyearb'] then
		return FlagData['histflagb']
	elseif tostring(FlagVar) == FlagData['histyearc'] then
		return FlagData['histflagc']
	elseif FlagVar:match("^%u%u.%d%d%d%d$") then
						n = tonumber(1)
			repeat
				if not FlagData['OLyear'..tostring(n)] then
					FlagName = FlagData['defflag']
				elseif FlagData['OLyear'..tostring(n)] ~= tostring(FlagVar) then
					FlagName = FlagData['defflag']
				end
				if FlagData['OLyear'..tostring(n)] then
					if tostring(FlagVar) == FlagData['OLyear'..tostring(n)] then
						FlagName = FlagData['OLflag'..tostring(n)]
						break
					end
				end
				n=tonumber(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 == "sultanatet" then
			FlagName = FlagData["sultanatet"]
		elseif FlagVar == "våpen" or FlagVar == "Våpen" or FlagVar == "coa" or FlagVar == "COA" or FlagVar == "weapon" then
			FlagName = FlagData["coa"]
		elseif FlagVar == "skjold" or FlagVar == "Skjold" or FlagVar == "shield" then
			FlagName = FlagData["shield"]
		elseif FlagVar == "segl" or FlagVar == "Segl" or FlagVar == "seal" then
			FlagName = FlagData["seal"]
		elseif FlagVar == "fotball" or FlagVar == "Fotball" then
			FlagName = FlagData["football"]
		elseif FlagVar == "OL (fotball)" then
			FlagName = FlagData["OLfootball"]
		elseif FlagVar == "eurovision" or FlagVar == "Eurovision" then
			FlagName = FlagData["eurovision"]
		elseif FlagVar == "turkvision" or FlagVar == "Turkvision" then
			FlagName = FlagData["turkvision"]
		elseif FlagVar ~= "" then
			FlagName = FlagData[FlagVar]
		else
			FlagName = FlagData['defflag']
		end

	return FlagName	
end

function p._pagelink(frame, args)
	local args = getArgs(frame)
	local areaname = p._areaname(frame, args)
	local FlagData = require("Modul:Flagg/Masterdata").flagdata[areaname]
	local LinkedPage = FlagData['pagelink']
	local Name = FlagData['name']
	
	if frame.args[2] == "lenke" or frame.args[3] == "lenke" then
		if LinkedPage == nil or LinkedPage == "" then
			return Name
		elseif frame.args[4] ~= nil and frame.args[4] ~= "" then 
			return mw.text.trim(frame.args[4])
		else
			return LinkedPage
		end
	else
		return Name
	end
end

function p._flaglink(frame, args)
	local args = getArgs(frame)
	local PageLink = p._pagelink(frame, args)

	if frame.args[8] ~= nil and frame.args[8] ~= "" then 
		return mw.text.trim(frame.args[8])
	else
		return PageLink
	end
end

function p._displaylink(frame, args)
	local args = getArgs(frame)
	local areaname = p._areaname(frame, args)
	local PageLink = p._pagelink(frame, args)
	local FlagData = require("Modul:Flagg/Masterdata").flagdata[areaname]
	local Name = FlagData['name']
	local DisplayName = FlagData['dispname']
 
 	if DisplayName ~= nil and DisplayName ~= "" then
 		DisplayName = DisplayName
 	else
 		DisplayName = Name
	end
 
	-- Hvilken lenketekst skal vises?
	if frame.args[5] ~= nil and frame.args[5] ~= "" then
		DispName = mw.text.trim(frame.args[5])
	else
		DispName = DisplayName
	end
 
	-- Avgjør om det skal vises lenke
	if mw.text.trim(frame.args[9]) == "h" then
		return "[[" .. PageLink .. "|" .. DispName .. "]]&nbsp;"
	elseif mw.text.trim(frame.args[2]) == "lenke" or mw.text.trim(frame.args[3]) == "lenke" then
		return "&nbsp;[[" .. PageLink .. "|" .. DispName .. "]]"
	elseif
		mw.text.trim(frame.args[7]) ~= nil and mw.text.trim(frame.args[7]) ~= "" then
			return mw.text.trim(frame.args[7])
	else
		return ""
	end
end

function p._size(frame, args)
	local args = getArgs(frame)
	if frame.args[6] ~= nil and frame.args[6] ~= "" then
		size = frame.args[6]
	else
		size = '22x18px'
	end
	
	if size == nil then return "" else return size end
end

function p._border(frame, args)
	local FlagData = require("Modul:Flagg/Masterdata").flagdata[areaname]
	local border = FlagData['border']
	if FlagData['border'] ~= nil then
		return FlagData['border']
	else
		return "border"
	end
end

function p.build(frame, args)
	local args = getArgs(frame)
	local size = p._size(frame, args)
	local areaname = p._areaname(frame, args)
	local flagname = p._data(frame, args)
	local pagelink = p._pagelink(frame, args)
	local flaglink = p._flaglink(frame, args)
	local displaylink = p._displaylink(frame, args)
	local border = p._border(frame, args)
	
	if Data['defflag'] == "" then
		return "[[Fil:Flag of None.svg|" .. size .. "|lenke=" .. areaname .. "]]<sup>[[Modul:Flagg/Data/nye|[?]]][[Kategori:Sider som inneholder uregistrerte flagg]]</sup>"
	elseif mw.text.trim(frame.args[9]) == "h" then
		return displaylink .. '[[Fil:' .. flagname .. '|'  .. size .. '|' .. border .. '|lenke=' .. flaglink .. ']]'
	else
		return '[[Fil:' .. flagname .. '|'  .. size .. '|' .. border .. '|lenke=' .. flaglink .. ']]' .. displaylink
	end
end
 
return p