Crivens!

static blog engine – episode iv – inventory.py

Donnerstag, 25. März 2010, Themen:

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.

Kommentare:
blog comments powered by Disqus