Modul:Statsledere
Hopp til navigering
Hopp til søk
Dokumentasjon for denne modulen kan opprettes på Modul:Statsledere/dok
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