Beachten Sie, dass dieses Projekt derzeit nicht besetzt ist, es wurde durch eine Golang-basierte Anwendung ersetzt, die eine vollständige Funktion der Funktionen hat:
Chronicle ist ein Tool, das ein Verzeichnis einfacher Textdateien in ein statisches HTML -Weblog (oder Blog, wenn Sie es bevorzugen) umwandelt.
Dieses Repository enthält eine Neuschreiberin des Chronicle Static Blog Compiler, das sowohl in Bezug auf Geschwindigkeit als auch Flexibilität ein erhebliches Upgrade darstellt.
Das System ist absichtlich einfach, unterstützt jedoch:
Diese Implementierung ist bei der Seitengenerierung erheblich schneller als bei früheren Versionen, vor allem, weil Beiträge analysiert und in eine SQLite -Datenbank eingefügt werden, anstatt dass jeder Beitrag in RAM gelesen wird.
Sobald die Blog -Beiträge in der SQLite -Datenbank besiedelt wurden, werden sie in eine Reihe von Vorlagen eingefügt, die letztendlich die Ausgabe generieren.
Obwohl wir davon ausgehen, dass Sie die SQLite -Datenbank aufbewahren, spielt es keine Rolle, ob Sie sie löschen. Das Parsen aller Ihre Einträge ist immer noch ein sehr schneller Prozess.
Klonen Sie das Repository und installieren Sie dann wie jedes CPAN -Modul:
perl Makefile.PL
make test
su - make install
Das Blog -Format ist sehr einfach und die folgende Datei ist ein Beispiel:
title: The title of my post
date: 12 August 2007
tags: foo, bar, baz
The text of the actual entry goes here.
However much there is of it.
Der Eintrag wird durch einen kleinen Kopfball vorangestellt, der aus mehreren Pseudoaderfeldern besteht. Der Header muss durch mindestens einer leeren Linie vom Körper getrennt werden.
Unbekannte Headerwerte werden ignoriert, und es ist kein Teil des Kopfes in die erzeugte Ausgabe enthalten.
Die folgenden Header -Werte werden erkannt:
Zusätzliche Header können durch bestimmte Plugins standardmäßig für den Zugriff ignoriert werden. Zum Beispiel wird das Chronicle::Plugin::SkipDrafts -Plugin sicherstellen, dass Blogeinträge ignoriert werden, wenn es noch Entwürfe ist - und einen draft:1 Header. In ähnlicher Weise gibt es ein Plugin namens PostSpooler , das Beiträge bis zu ihren Fälligkeitsdaten ignoriert und der Special publish Header verwendet - und nicht das date .
Angenommen, Sie haben ein Verzeichnis mit einer Reihe von Blog -Posts, die Sie in der Lage sein sollten, Ihr Blog so zu generieren:
chronicle --input=path/to/input --output=/path/to/output
--theme=blog.steve.org.uk
Dadurch wird path/to/input/*.txt gelesen und das Blog unter dem Verzeichnis /path/to/output/ das Verzeichnis erstellen, wenn es fehlt.
Die SQLite -Datenbank wird standardmäßig unter ./blog.db erstellt, und wenn sie gelöscht wird, wird sie regeneriert.
Das vorherige Beispiel zeigte die grundlegende Verwendung, eine offensichtliche Änderung, die die meisten Benutzer bevorzugen würden, wäre, den Titel des Blogs und den Untertitel festzulegen:
chronicle --title="Steve Kemp's Blog" --sub-title="Writings about cake" ..
Wenn Sie mehrere Werte festlegen, bevorzugen Sie möglicherweise stattdessen eine Konfigurationsdatei. Chronicle liest /etc/chronicle/config und ~/.chronicle/config vor dem Start. Wenn Sie nicht eine eigene Konfigurationsdatei angeben können, über --config=/path/to/conf .
Die Konfigurationsdatei stimmt genau mit den Befehlszeilenargumenten überein, sodass die Konfigurationsdatei so angegeben ist.
foo = bar
Wie wir bereits bemerkt haben, erfolgt die Blog-Generation weitgehend über eine Reihe von Plugins. Zum Beispiel kann die Seitenleiste die Liste aller Tags anzeigen, die schnell unhandlich werden kann. Wenn Sie deaktivieren möchten, dass Sie dies über:
chronicle --exclude-plugins=AllTags,RecentPosts --force ..
HINWEIS : Die Plugins, die Ausgangsseiten erzeugen, befinden sich unter der
Chronicle::Plugin::Generate. Die Plugins, die für alle Seiten verfügbare Snippets erzeugen, befinden sich unter derChronicle::Plugin::SnippetsName-Raum.
Hinweis : Da die Ausschnitte auf jeder Seite in den Standardthemen enthalten sind, haben wir hinzugefügt
--force, um sicherzustellen, dass die Ausgabeseiten aktualisiert werden.
In einem Ideal sollten Sie in der Lage sein, von früheren Chronikfreisetzungen direkt auf diese Codebasis zu migrieren, da der Zweck und der Hauptvorgang identisch sind:
data/ , es sei denn, Sie geben einen anderen Pfad über " --input " an.*.txt die Blogeinträge sind, es sei denn, Sie geben " --pattern=*.blog " an.Es gibt jedoch Änderungen, und diese beziehen sich weitgehend auf die Vorlagen zusammen mit den Implementierungsunterschieden.
Ab Chronicle 5 analysiert das Hauptskript alle Befehlszeilenargumente und liest die Blog-Beiträge, aber die tatsächliche Generation Ihrer Website ist ausschließlich Plugin-basiert. Die Plugins sind Standard-Perl-Module, die sich unter der Chronicle::Plugin -Namensraum befinden, und obwohl Sie keine der Details kennen müssen, die sie dank der Verwendung von Modul :: Pluggable :: Ordered Class bestellt werden können.
Die Vorlagenänderungen sind etwas bedeutender als ich gerne, aber glücklicherweise bestehen diese Änderungen weitgehend aus neuen Orten für Dinge und zusätzlichen Seiten.
Wie bereits erwähnt, ist der Kerncode ziemlich minimal und die gesamte Ausgangsfunktionen werden von Plugins durchgeführt.
Der Kern ruft die folgenden Methoden auf, wenn sie in Plugins vorhanden sind:
on_db_createon_db_openon_inserton_initiateon_generateon_initiate , außer dass die früheren Plugin -Methoden garantiert aufgerufen wurden, bevor on_generate aufgerufen wird.