Die Scanner-Klasse im Modul inventory.py ist eine der wichtigsten Grundlagen
für die "static blog engine". Zuerst sucht sie alle bereits vorhandenen Artikel
und erstellt danach die Jahr/Monat/Tag-Struktur anhand der Artikel. Warum habe
ich diese Weg gewählt und nicht gleich beim Scannen auch Jahr, Monat und Tag
miterstellen lassen? Ich stand vor dem Problem, dass falls der letzte Artikel
eines Tages (Monates / Jahres) gelöscht würde, ich die komplette Struktur
nochmals durchsuchen müsste. Da übergeordnete Objekte nur von vorhandenen
Artikeln abgeleitet werden entfällt dieses.
Des weiteren bietet die Scanner-Klasse die Möglichkeit alle Artikel eines
Jahres oder alle geänderten Artikel seit einem Zeitpunk (Unixtimestamp) als ein
Python set zurückzugeben.
Das Moul enthält noch eine weitere Klasse RenderingSet. Übergibt man dieser
ein Python-set mit Artikeln ermittelt diese alle Knoten (siehe nodes.py)
die ausgegeben werden müssen. Dies sind nicht nur die Artikel und übergeordnete
Objekte selbst, sondern auch die vorherigen und nachfolgenden Artikel – es
könnte sich um einen neuen Artikel handeln oder der Titel könnte geändert sein.
Desweiteren müssen auch vorheriger und nachfolgender Tag / Monat / Jahr neu
ausgegben werden, da es sich um einen neuen Tag / Monat / Jahr handeln könnte.
Das Ausgeben von vorherigen bzw. nächsten Objekten müsste nicht sein, wenn man überprüfen würde, ob der Tag / Monat / Jahr schon existiert. Allerdings wäre dann eine Art Index der bereits vorhandenen Objekten nötig, gegen die man einen Vergleich anstellt. So finde ich es viel einfacher.