Modul:Briefspielnews: Unterschied zwischen den Versionen

Aus GaretienWiki
Zur Navigation springen Zur Suche springen
VolkoV (D | B)
Keine Bearbeitungszusammenfassung
VolkoV (D | B)
Keine Bearbeitungszusammenfassung
Zeile 39: Zeile 39:
reihe[r]={}
reihe[r]={}
reihe[r]["Kapitel"]={}
reihe[r]["Kapitel"]={}
local y,m,d=kap["Kapiteldatum"]:match("(%d%d%d%d)-?(%d?%d?)-?(%d?%d?)$")
local y,m,d=kap["Kapiteldatum"]:match("(%d%d%d%d)-?(%d?%d?)-?(%d?%d?)T")
reihe[r]["Reihedatum"]=os.time({year=2024,month=10,day=5})
reihe[r]["Reihedatum"]=os.time({year=y,month=m,day=d})
end
end
table.insert(reihe[r]["Kapitel"],kap)
table.insert(reihe[r]["Kapitel"],kap)

Version vom 5. Oktober 2024, 09:28 Uhr

Die Dokumentation für dieses Modul kann unter Modul:Briefspielnews/Doku erstellt werden

require("Modul:Hilfsfunktionen")
require("Modul:Text")

local p = {}

--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
		local r=kap["Reihe ist"]
		if reihe[r]==nil then
			reihe[r]={}
			reihe[r]["Kapitel"]={}
			local y,m,d=kap["Kapiteldatum"]:match("(%d%d%d%d)-?(%d?%d?)-?(%d?%d?)T")
			reihe[r]["Reihedatum"]=os.time({year=y,month=m,day=d})
		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