Modul:Statsledere1
Utseende
-- Dette er en variant der verken flagg eller navn på land vises, forutsetter dette er lagt inn på linjen før kall - f. eks: *{{Flagg|Mongolia|lenke=Folkerepublikken Mongolia}}
local p = {}
-- Returnerer de gjeldende årstallene for stillingshaveren, med utheving for nåværende år
function aarstall(x,y,z)
if x == y then
return "'''" .. x .. "'''"
elseif x == z then
if y == 0 then
return "'''" .. x .. "'''–"
else
return "'''" .. x .. "'''–" .. y
end
elseif y == z then
return x .. "–'''" .. y .. "'''"
else
if y == 0 then
return x .. "–"
else
return x .. "–" .. y
end
end
end
function aarsjekk(a,b,c)
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:Statsledere1/" ..frame.args[1]) then
konfig = require("Modul:Statsledere1/" .. frame.args[1])
else
return "* <span class=\"error\">Konfigurasjonsfila «Modul:Statsledere1/" .. frame.args[1] .. "» finnes ikke! [" .. tostring(mw.uri.fullUrl("Modul:Statsledere1/" .. frame.args[1], { ["action"]="edit", ["editintro"]="Mal:Statsledere1/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
landlinje = punkter(0)
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:Statsledere1/" .. frame.args[1] .. "|konfigurasjonen]] fantes ikke " .. land .. " som selvstendig stat i " .. aar .. ".</span>"
end
if (konfig["spesialår"] and konfig["spesialår"][aar]) then
spesialtekst = table.concat(konfig["spesialår"][aar],"\n")
return spesialtekst
else
if (konfig["notiser"] and konfig["notiser"][aar]) then
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 = { "Statsledere1", "settsammen", frame.args[1] .. "/" .. v[3], aar }} ) -- Skittent som faen, men det funker!
end
end
end
if (konfig["notiser"] and konfig["notiser"][aar]) then
return landlinje .. table.concat(sulamitten,"\n")
else
return table.concat(sulamitten,"\n")
end
end
end
return p