Modul:Statsledere
Utseende
local p = {}
-- Returnerer de gjeldende årstallene for stillingshaveren, med utheving for nåværende år
function aarstall(x,y,z)
local xabs = -x
local yabs = -y
if x == y then
if x > 0 then
return "'''" .. x .. "'''"
else
return "'''" .. xabs .. " f.Kr.'''"
end
elseif x == z then
if y == 0 then
return "'''" .. x .. "'''–"
else
if x > 0 and y > 0 then
return "'''" .. x .. "'''–" .. y
elseif x < 0 and y > 0 then
return "'''" .. xabs .. " f.Kr.'''-" .. y
elseif y < 0 then
return "'''" .. xabs .. " f.Kr.'''-" .. yabs .. " f.Kr."
end
end
elseif y == z then
if x > 0 and y > 0 then
return x .. "–'''" .. y .. "'''"
elseif x < 0 and y > 0 then
return xabs .. " f.Kr.−'''" .. y .. "'''"
else
return xabs .. " f.Kr.–'''" .. yabs .. " f.Kr.'''"
end
else
if y == 0 then
return x .. "–"
else
if x > 0 and y > 0 then
return x .. "–" .. y
elseif x < 0 and y > 0 then
return xabs .. " f.Kr.–" .. y
elseif y < 0 then
return xabs .. " f.Kr.–" .. yabs .. " f.Kr."
end
end
end
end
function aarsjekk(a,b,c)
if c == nil then
return false
end
if (c >= a) and ((c <= b) or (b == 0)) then
return true
else
return false
end
end
function p.settsammen(frame)
if pcall(require, "Modul:Statsledere/" ..frame.args[1]) then
konfig = require("Modul:Statsledere/" .. frame.args[1])
else
return "* <span class=\"error\">Konfigurasjonsfila «Modul:Statsledere/" .. frame.args[1] .. "» finnes ikke! [" .. tostring(mw.uri.fullUrl("Modul:Statsledere/" .. frame.args[1], { ["action"]="edit", ["editintro"]="Mal:Statsledere/editintro"})) .. " Klikk her] for å opprette den.</span>"
end
local definisjoner = konfig["definisjoner"]
local land = definisjoner["land"]
local aar = tonumber(frame.args[2] or mw.title.getCurrentTitle().text:sub(-4))
local nivaa = (definisjoner["nivaa"] or 0)
local function punkter(x,y)
return string.rep("*",nivaa+x+(y or 0))
end
if definisjoner["brukflagg"] then
landnavn = frame:expandTemplate{title="flagg", args={ land, aar, "lenke" } }
else
landnavn = "[[" .. land .. "]]"
end
landlinje = punkter(1) .. "'''" .. landnavn .. "'''"
if definisjoner["landforklaring"] then
landlinje = landlinje .. " (" .. definisjoner["landforklaring"] .. ")\n"
else
landlinje = landlinje .. "\n"
end
local finnes = 0
for _,v in ipairs(definisjoner["eksisterte"]) do
if aarsjekk(v[1],v[2],aar) then
finnes = finnes + 1
end
end
if finnes == 0 then
return landlinje .. punkter(2) .. "<span class=\"error\">Ifølge [[Modul:Statsledere/" .. frame.args[1] .. "|konfigurasjonen]] fantes ikke " .. land .. " som selvstendig stat i " .. (aar or '(ukjent)') .. ".</span>"
.. "[[Kategori:Sider med konfigurasjonsfeil fra Lua-moduler]]"
end
if (konfig["spesialår"] and konfig["spesialår"][aar]) then
spesialtekst = table.concat(konfig["spesialår"][aar],"\n")
return landlinje .. spesialtekst
else
if (konfig["notiser"] and konfig["notiser"][aar]) then
landlinje = landlinje .. punkter(2) .. "''" .. konfig["notiser"][aar] .. "''\n"
end
local ledertypeliste = {}
local ledertypedef = {}
for _,v in ipairs(definisjoner["ledertyper"]) do
local startaar = v[1]
local sluttaar = v[2]
local ledertype = v[3]
local ledertittel = v[4]
local lederartnavn = v[5]
local lederartvis = v[6]
local ledertabellnavn = v[7]
local nivaa2 = (v["nivaa"] or 0)
if aarsjekk(startaar,sluttaar,aar) then
table.insert(ledertypeliste, ledertype)
ledertypedef[ledertype] = { ledertittel, lederartnavn, lederartvis, ledertabellnavn, nivaa2 }
end
end
local function linjegenerator(aar,liste,verv)
tabell_med_ledere = {}
for _,v in ipairs(liste) do
local startaar = v[1]
local sluttaar = v[2]
local person = v[3]
local tittel = (v["tittelvariant"] or ledertypedef[verv][3])
if aarsjekk(startaar,sluttaar,aar) then
tekst = person .. ", [[" .. ledertypedef[verv][2] .. "|" .. tittel .. "]] (" .. aarstall(startaar,sluttaar,aar) .. ")"
if v["ref"] then
tekst = tekst .. frame:extensionTag{ name = "ref", content = v["ref"] }
end
table.insert(tabell_med_ledere, tekst)
end
end
return tabell_med_ledere
end
sulamitten = {}
for _,v in ipairs(ledertypeliste) do
local ledertype = ledertypedef[v][1]
local lederliste = konfig[ledertypedef[v][4]]
local nivaa3 = ledertypedef[v][5]
if #linjegenerator(aar,lederliste,v) == 1 then
lederpunkt = punkter(2,nivaa3) .. ledertype .. " – " .. linjegenerator(aar,lederliste,v)[1]
else
lederpunkt = punkter(2,nivaa3) .. ledertype .. " –\n" .. punkter(2,nivaa3) .. "#" .. table.concat(linjegenerator(aar,lederliste,v),"\n" .. punkter(2,nivaa3) .. "#")
end
table.insert(sulamitten, lederpunkt)
end
if definisjoner["territorier"] then
territorieliste = {}
for _,v in ipairs(definisjoner["territorier"]) do
if aarsjekk(v[1],v[2],aar) then
table.insert(sulamitten, frame:callParserFunction{name = "#invoke", args = { "Statsledere", "settsammen", frame.args[1] .. "/" .. v[3], aar }} ) -- Skittent, men det funker!
end
end
end
return landlinje .. table.concat(sulamitten,"\n")
end
end
return p