Modul:Flagg
Utseende
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 = areaname
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 == "weapon" then
FlagName = FlagData["weapon"]
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 .. "]] "
elseif mw.text.trim(frame.args[2]) == "lenke" or mw.text.trim(frame.args[3]) == "lenke" then
return " [[" .. 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 flagname == "Flag of None.svg" 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