Modul:Flagg
Utseende
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 .. "]] "
else
LinkOut = " [[" .. 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]) .. ' '
else
LinkRes = ' ' .. 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