Modul:Briefspielnews: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 35: | Zeile 35: | ||
--Formatierung der Ausgabe | --Formatierung der Ausgabe | ||
function ausgabe(kapitel) | function ausgabe(kapitel,altr) | ||
local result="" | local result="" | ||
local now=time() | |||
local reihe={} | local reihe={} | ||
| Zeile 59: | Zeile 60: | ||
result=result.."\n{| class=\"tabellehuebsch\" style=\"width:100%\"" | result=result.."\n{| class=\"tabellehuebsch\" style=\"width:100%\"" | ||
for k,kap in spairs(rei["Kapitel"]) do | for k,kap in spairs(rei["Kapitel"]) do | ||
local diff=os.difftime(now,kap["Datum"]) | |||
local kurzbeschreibung=kap["Kurzbeschreibung"] | local kurzbeschreibung=kap["Kurzbeschreibung"] | ||
if kurzbeschreibung==nil then | if kurzbeschreibung==nil then | ||
| Zeile 64: | Zeile 66: | ||
end | end | ||
result=result.."\n|-" | result=result.."\n|-" | ||
result=result.."\n|style=\"width:10%\"|"..os.date("%Y-%m-%d",kap["Datum"]) | result=result.."\n|style=\"width:10%\"|"..os.date("%Y-%m-%d",kap["Datum"]).." ("..diff..")" | ||
result=result.."\n|style=\"width:20%\"|[["..kap["Kapitel"].."|"..kap["Kapitelname ist"].."]]" | result=result.."\n|style=\"width:20%\"|[["..kap["Kapitel"].."|"..kap["Kapitelname ist"].."]]" | ||
result=result.."\n|style=\"width:70%\"|"..kurzbeschreibung | result=result.."\n|style=\"width:70%\"|"..kurzbeschreibung | ||
| Zeile 78: | Zeile 80: | ||
local anzahl=robusttrim(frame.args[1]) | local anzahl=robusttrim(frame.args[1]) | ||
if(anzahl=='') then anzahl='10' end | if(anzahl=='') then anzahl='10' end | ||
local alter=robusttrim(frame.args[2]) | |||
if(alter=='') then anzahl='7' end | |||
local kapitel=holeKapitel(anzahl) | local kapitel=holeKapitel(anzahl) | ||
return ausgabe(kapitel) | return ausgabe(kapitel,alter) | ||
end | end | ||
return p | return p | ||
Version vom 5. Oktober 2024, 13:06 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,altr)
local result=""
local now=time()
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["Datum"]>reihe[r]["Reihedatum"] then
reihe[r]["Reihedatum"]=kap["Datum"]
end
end
--Gebe die Reihen aus
for r,rei in spairs(reihe,sortReihe) do
result=result.."\n=="..os.date("%Y-%m-%d",rei["Reihedatum"]).." '''[["..r.." — Briefspielreihe|"..r.."]]'''=="
result=result.."\n{| class=\"tabellehuebsch\" style=\"width:100%\""
for k,kap in spairs(rei["Kapitel"]) do
local diff=os.difftime(now,kap["Datum"])
local kurzbeschreibung=kap["Kurzbeschreibung"]
if kurzbeschreibung==nil then
kurzbeschreibung=""
end
result=result.."\n|-"
result=result.."\n|style=\"width:10%\"|"..os.date("%Y-%m-%d",kap["Datum"]).." ("..diff..")"
result=result.."\n|style=\"width:20%\"|[["..kap["Kapitel"].."|"..kap["Kapitelname ist"].."]]"
result=result.."\n|style=\"width:70%\"|"..kurzbeschreibung
end
result=result.."\n|}"
end
return result
end
--Aufzurufende Funktion
function p.news(frame)
local anzahl=robusttrim(frame.args[1])
if(anzahl=='') then anzahl='10' end
local alter=robusttrim(frame.args[2])
if(alter=='') then anzahl='7' end
local kapitel=holeKapitel(anzahl)
return ausgabe(kapitel,alter)
end
return p