Modul:Flagg/sandkasse
Hopp til navigering
Hopp til søk
Dokumentasjon for denne modulen kan opprettes på Modul:Flagg/sandkasse/dok
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/sandkasse").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 = "Ikke-eksisterende"
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/sandkasse").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/sandkasse").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/sandkasse").flagdata[areaname]
local LinkedPage = FlagData['pagelink']
local Name = FlagData['name']
if frame.args["lenke"] ~= nil and frame.args["lenke"] ~= "" then
return mw.text.trim(frame.args["lenke"])
elseif frame.args[2] == "lenke" or frame.args[3] == "lenke" then
if LinkedPage ~= nil and LinkedPage ~= "" then
return LinkedPage
else
return Name
end
elseif LinkedPage ~= nil and LinkedPage ~= "" then
return LinkedPage
else
return Name
end
end
function p._flaglink(frame, args)
local args = getArgs(frame)
local PageLink = p._pagelink(frame, args)
if frame.args["flagglenke"] ~= nil and frame.args["flagglenke"] ~= "" then
return mw.text.trim(frame.args["flagglenke"])
elseif frame.args["lenke"] ~= "" and frame.args["lenke"] ~= nil then
return frame.args["lenke"]
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/sandkasse").flagdata[areaname]
local Name = FlagData['name']
local DisplayName = FlagData['dispname']
if DisplayName == nil or DisplayName == "" then
DisplayName = Name
elseif DisplayName ~= nil and DisplayName ~= "" then
DisplayName = DisplayName
end
-- Hvilken lenketekst skal vises?
if frame.args["lenketekst"] ~= nil and frame.args["lenketekst"] ~= "" then
DispName = mw.text.trim(frame.args["lenketekst"])
else
DispName = DisplayName
end
-- Avgjør om det skal vises lenke
if frame.args["side"] == nil then RightFlag = "" else RightFlag = frame.args["side"] end
if RightFlag == "" then
if frame.args[2] == "lenke" or frame.args[3] == "lenke" then
if frame.args["lenketekst"] ~= nil and frame.args["lenketekst"] ~= "" then
return " [[" .. PageLink .. "|" .. frame.args["lenketekst"] .. "]]"
else
return " [[" .. PageLink .. "|" .. DispName .. "]]"
end
elseif frame.args["lenke"] ~= nil and frame.args["lenke"] ~= "" then
if frame.args["lenketekst"] ~= nil and frame.args["lenketekst"] ~= "" then
return " [[" .. frame.args["lenke"] .. "|" .. frame.args["lenketekst"] .. "]]"
else
return " [[" .. frame.args["lenke"] .. "]]"
end
elseif frame.args["tekst"] ~= nil and frame.args["tekst"] ~= "" then
return frame.args["tekst"]
else
return ""
end
elseif RightFlag == "h" then
return "[[" .. PageLink .. "|" .. DispName .. "]] "
else
return ""
end
end
function p._size(frame, args)
local args = getArgs(frame)
if frame.args["størrelse"] ~= nil and frame.args["størrelse"] ~= "" then
size = frame.args["størrelse"]
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/sandkasse").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 areaname == "Ikke-eksisterende" then
result = mw.getCurrentFrame():expandTemplate{ title = "Bruker:Cocu/Flagg/Old", args = { frame.args[1], frame.args[2], frame.args[3],
["lenke"] = frame.args["lenke"], ["lenketekst"] = frame.args["lenketekst"], ["størrelse"] = frame.args["størrelse"]} };
end
if result == nil then areaname = "Ikke-eksisterende" else
return result
end
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 frame.args["side"] == "h" then
return displaylink .. '[[Fil:' .. flagname .. '|' .. size .. '|' .. border .. '|lenke=' .. flaglink .. ']]'
else
return '[[Fil:' .. flagname .. '|' .. size .. '|' .. border .. '|lenke=' .. flaglink .. ']]' .. displaylink
end
end
return p