Remarque Ce projet est actuellement sans rapport, il a été remplacé par une application basée à Golang qui a une parité complète:
Chronicle est un outil qui convertira un répertoire de fichiers texte simples en un blog HTML statique, (ou blog si vous préférez).
Ce référentiel contient une réécriture à partir de Scratch du compilateur Chronicle Static Blog, qui représente une mise à niveau significative en termes de vitesse et de flexibilité.
Le système est intentionnellement simple, mais il supporte:
Cette implémentation est considérablement plus rapide à la génération de pages que les versions précédentes, principalement parce que les publications sont analysées et insérées dans une base de données SQLite, plutôt que de lire chaque message dans RAM.
Une fois que les articles de blog ont été remplis dans la base de données SQLite, ils sont insérés dans une série de modèles, ce qui génère finalement la sortie.
Bien que nous supposions que vous gardez la base de données SQLite autour, peu importe si vous le supprimez. L'acte d'analyse de toutes vos entrées est toujours un processus très rapide.
Clone le référentiel puis installez-vous comme vous le feriez pour n'importe quel module CPAN:
perl Makefile.PL
make test
su - make install
Le format de blog est très simple et le fichier suivant est un échantillon:
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.
L'entrée est préfixée par un petit en-tête, composé de plusieurs champs de pseudo-tête. L'en-tête doit être séparé du corps par au moins une ligne vide.
Les valeurs d'en-tête inconnues sont ignorées et aucune partie de l'en-tête n'est incluse dans la sortie générée.
Les valeurs d'en-tête suivantes sont reconnues:
Les en-têtes supplémentaires peuvent être insérés, qui seront ignorés par défaut, pour l'accès par des plugins particuliers. Par exemple, le plugin Chronicle::Plugin::SkipDrafts s'assurera que les entrées de blog sont ignorées s'ils sont toujours des brouillons - et incluent un en-tête draft:1 . De même, il existe un plugin appelé PostSpooler qui ignorera les publications jusqu'à leurs données dues, et qui utilise l'en-tête publish spéciale - plutôt que la date par défaut.
En supposant que vous disposez d'un répertoire contenant un certain nombre de articles de blog, vous devriez pouvoir générer votre blog comme ça:
chronicle --input=path/to/input --output=/path/to/output
--theme=blog.steve.org.uk
Cela lira path/to/input/*.txt et générera le blog sous le répertoire /path/to/output/ créant ce répertoire en cas de manque.
La base de données SQLite sera créée sur ./blog.db par défaut, et si elle est supprimée, elle sera régénérée.
L'exemple précédent a montré l'utilisation de base, un changement évident que la plupart des utilisateurs préféreraient consister à définir le titre du blog et le sous-titre:
chronicle --title="Steve Kemp's Blog" --sub-title="Writings about cake" ..
Si vous commencez à définir plusieurs valeurs, vous préférez peut-être utiliser un fichier de configuration à la place. Chronicle lira /etc/chronicle/config , et ~/.chronicle/config avant de commencer. Échec que vous pouvez spécifier un fichier de configuration de votre propre via --config=/path/to/conf .
Le fichier de configuration correspond exactement aux arguments de la ligne de commande, donc étant donné "--foo = bar" Le fichier de configuration permettrait à la même chose d'être définie via:
foo = bar
Comme nous l'avons déjà noté, la génération de blog se produit en grande partie via une série de plugins. Par exemple, la barre latérale peut afficher la liste de toutes les balises, ce qui peut devenir difficile à manier rapidement. Si vous vouliez désactiver que vous puissiez le faire via:
chronicle --exclude-plugins=AllTags,RecentPosts --force ..
Remarque : Les plugins qui génèrent des pages de sortie sont situés sous le
Chronicle::Plugin::Generatele nom de nom. Les plugins qui génèrent des extraits disponibles pour toutes les pages sont situés sous leChronicle::Plugin::SnippetsName-espace.
Remarque : Parce que les extraits sont inclus dans chaque page, dans les thèmes par défaut, nous avons ajouté
--forcepour nous assurer que les pages de sortie sont mises à jour.
Dans un idéal, vous devriez être en mesure de migrer des rejets de chronique précédents directement dans cette base de code, car l'objectif et le fonctionnement principal sont identiques:
data/ , sauf si vous spécifiez un chemin différent via " --input ".*.txt sont les entrées de blog, sauf si vous spécifiez " --pattern=*.blog ".Cependant, il y a des changements, et ceux-ci sont largement liés aux modèles, ainsi que les différences de mise en œuvre.
À partir de Chronicle 5, le script principal analyse tous les arguments en ligne de commande et lit les articles de blog, mais la génération réelle de votre site est entièrement basée sur des plugins. Les plugins sont des modules Perl standard situés sous le Chronicle::Plugin , et bien que vous n'ayez pas besoin de connaître les détails, ils peuvent être commandés grâce à l'utilisation du module :: Pluggable :: Classe commandée.
Les changements de modèle sont un peu plus significatifs que je ne le souhaite, mais avec bonheur ces changements se composent en grande partie de nouveaux emplacements pour les choses et des pages supplémentaires.
Comme mentionné, le code central est assez minime et toutes les fonctionnalités de sortie sont effectuées par des plugins.
Le noyau appellera les méthodes suivantes si elle est présente dans les plugins:
on_db_createon_db_openon_inserton_initiateon_generateon_initiate , sauf que les anciennes méthodes de plugin sont garanties pour avoir été appelée avant l'invoquer on_generate .