Modul:Briefspielnews: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 3: | Zeile 3: | ||
local p = {} | local p = {} | ||
--wandelt ein ISO-Datum in ein Time-Object um | |||
function parseISO(str) | |||
local y,m,d,h,i,s=str:match("(%d%d%d%d)-(%d?%d?)-(%d?%d?)T(%d?%d?):(%d?%d?):(%d?%d?)") | |||
return os.time({year=y,month=m,day=d,hour=h,min=i,sec=s}) | |||
end | |||
--Hole die 500 neuesten Kapitel | --Hole die 500 neuesten Kapitel | ||
| Zeile 35: | Zeile 42: | ||
--Teile die Kapitel auf die Reihen auf | --Teile die Kapitel auf die Reihen auf | ||
for k,kap in spairs(kapitel) do | for k,kap in spairs(kapitel) do | ||
kap["Datum"]=parseISO(kap["kapiteldatum"]) | |||
local r=kap["Reihe ist"] | local r=kap["Reihe ist"] | ||
if reihe[r]==nil then | if reihe[r]==nil then | ||
reihe[r]={} | reihe[r]={} | ||
reihe[r]["Kapitel"]={} | reihe[r]["Kapitel"]={} | ||
reihe[r]["Reihedatum"]=kap["Datum"] | |||
reihe[r]["Reihedatum"]= | |||
end | end | ||
table.insert(reihe[r]["Kapitel"],kap) | table.insert(reihe[r]["Kapitel"],kap) | ||
Version vom 5. Oktober 2024, 09:32 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Briefspielnews/Doku erstellt werden
require("Modul:Hilfsfunktionen")
require("Modul:Text")
local p = {}
--wandelt ein ISO-Datum in ein Time-Object um
function parseISO(str)
local y,m,d,h,i,s=str:match("(%d%d%d%d)-(%d?%d?)-(%d?%d?)T(%d?%d?):(%d?%d?):(%d?%d?)")
return os.time({year=y,month=m,day=d,hour=h,min=i,sec=s})
end
--Hole die 500 neuesten Kapitel
function holeKapitel(anzahl)
local kapitel=mw.smw.ask("{{#ask: [[-has subobject::+]]"
.."|?#-=Kapitel"
.."|?Kurzbeschreibung#"
.."|?Kapitelname ist"
.."|?Reihe ist"
.."|?Kapiteldatum#ISO"
.."|limit="..anzahl
.."|order=desc"
.."|sort=Kapiteldatum"
.."|offset=0"
.."|searchlabel=")
if kapitel==nil then
return {}
end
return kapitel
end
--Sortierfunktion für die Reihen
function sortReihe(t,a,b)
return t[b]["Reihedatum"]<t[a]["Reihedatum"]
end
--Formatierung der Ausgabe
function ausgabe(kapitel)
local result=""
local reihe={}
--Teile die Kapitel auf die Reihen auf
for k,kap in spairs(kapitel) do
kap["Datum"]=parseISO(kap["kapiteldatum"])
local r=kap["Reihe ist"]
if reihe[r]==nil then
reihe[r]={}
reihe[r]["Kapitel"]={}
reihe[r]["Reihedatum"]=kap["Datum"]
end
table.insert(reihe[r]["Kapitel"],kap)
--if kap["Kapiteldatum"]>reihe[r]["Reihedatum"] then
-- reihe[r]["Reihedatum"]=kap["Kapiteldatum"]
-- end
end
--Gebe die Reihen aus
for r,rei in spairs(reihe,sortReihe) do
result=result.."\n*"..rei["Reihedatum"].." '''[["..r.." — Briefspielreihe|"..r.."]]'''"
for k,kap in spairs(rei["Kapitel"]) do
local kurzbeschreibung=kap["Kurzbeschreibung"]
if kurzbeschreibung~=nil then
kurzbeschreibung=" - "..kurzbeschreibung
else
kurzbeschreibung=""
end
result=result.."\n**"..kap["Kapiteldatum"].." [["..kap["Kapitel"].."|"..kap["Kapitelname ist"].."]]"..kurzbeschreibung
end
end
return result
end
--Aufzurufende Funktion
function p.news(frame)
local anzahl=robusttrim(frame.args[1])
if(anzahl=='') then anzahl='10' end
local kapitel=holeKapitel(anzahl)
return ausgabe(kapitel)
end
return p