Tenga en cuenta que este proyecto está actualmente sin mantenimiento, fue reemplazado por una aplicación basada en Golang que tiene paridad de características completa:
Chronicle es una herramienta que convertirá un directorio de archivos de texto simples en un weblog HTML estático (o blog si lo prefiere).
Este repositorio contiene una reescritura de franjas del compilador de blogs Static de Chronicle, que representa una actualización significativa en términos de velocidad y flexibilidad.
El sistema es intencionalmente simple, pero es compatible:
Esta implementación es significativamente más rápida en la generación de páginas que las versiones anteriores, principalmente porque las publicaciones se analizan e insertan en una base de datos SQLite, en lugar de que cada publicación lea en RAM.
Una vez que las publicaciones de blog se han poblado en la base de datos SQLite, se insertan en una serie de plantillas, lo que finalmente genera la salida.
Aunque asumimos que mantiene la base de datos SQLite alrededor de ella, no importa si la elimina. El acto de analizar todas sus entradas sigue siendo un proceso muy rápido.
Clone el repositorio luego instale como lo haría con cualquier módulo CPAN:
perl Makefile.PL
make test
su - make install
El formato de blog es muy simple, y el siguiente archivo es una muestra:
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.
La entrada está prefijada por un pequeño encabezado, que consta de varios campos de pseudo-cabeza de cabeza. El encabezado debe separarse del cuerpo por al menos una línea vacía.
Se ignoran los valores de encabezado que se desconocen, y no se incluye parte del encabezado en la salida que se genera.
Se reconocen los siguientes valores de encabezado:
Se pueden insertar encabezados adicionales, que se ignorarán de forma predeterminada, para el acceso mediante complementos particulares. Por ejemplo, el complemento Chronicle::Plugin::SkipDrafts asegurará que las entradas del blog se ignoren si todavía son borradores, e incluye un draft:1 encabezado. Del mismo modo, hay un complemento llamado PostSpooler que ignorará las publicaciones hasta sus datos debido, y que utiliza el encabezado publish especial, en lugar de la date predeterminada.
Suponiendo que tenga un directorio que contenga una serie de publicaciones de blog, debería poder generar su blog así:
chronicle --input=path/to/input --output=/path/to/output
--theme=blog.steve.org.uk
Esto leerá path/to/input/*.txt y generará el blog debajo del directorio /path/to/output/ creando ese directorio si falta.
La base de datos SQLite se creará en ./blog.db de forma predeterminada, y si se elimina se regenerará.
El ejemplo anterior mostró el uso básico, un cambio obvio que la mayoría de los usuarios preferirían sería establecer el título del blog y el subtítulo:
chronicle --title="Steve Kemp's Blog" --sub-title="Writings about cake" ..
Si comienza a configurar múltiples valores, puede preferir usar un archivo de configuración en su lugar. Chronicle leerá /etc/chronicle/config , y ~/.chronicle/config antes de comenzar. No puede especificar un archivo de configuración propio a través de --config=/path/to/conf .
El archivo de configuración coincide exactamente con los argumentos de la línea de comando, por lo que dado "--foo = bar", el archivo de configuración permitiría establecer lo mismo a través de:
foo = bar
Como hemos señalado anteriormente, la generación del blog ocurre en gran medida a través de una serie de complementos. Por ejemplo, la barra lateral podría mostrar la lista de todas las etiquetas, que pueden ser difíciles de manejar rápidamente. Si desea deshabilitar que pudiera hacerlo a través de:
chronicle --exclude-plugins=AllTags,RecentPosts --force ..
Nota : Los complementos que generan páginas de salida se encuentran debajo de la
Chronicle::Plugin::Generateel espacio de nombre. Los complementos que generan fragmentos disponibles para todas las páginas se encuentran debajo de laChronicle::Plugin::Snippets-Space.
Nota : Debido a que los fragmentos se incluyen en cada página, en los temas predeterminados, hemos agregado
--forcepara garantizar que las páginas de salida se actualicen.
En un ideal, ¿debería poder migrar de las comunicadas de Chronicle anteriores directamente a esta base de código, ya que el propósito y la operación principal son idénticas?
data/ , a menos que especifique una ruta diferente a través de " --input ".*.txt son las entradas del blog, a menos que especifique " --pattern=*.blog ".Sin embargo, hay cambios, y estos se relacionan en gran medida con las plantillas, junto con las diferencias de implementación.
A partir de la crónica 5, el guión principal analiza cualquier argumento de línea de comandos y lee las publicaciones de blog, pero la generación real de su sitio está completamente basada en complementos. Los complementos son módulos PERL estándar ubicados debajo del espacio de nombre Chronicle::Plugin , y aunque no necesita saber ninguno de los detalles que se pueden ordenar gracias al uso del módulo :: Clasgable :: Clase ordenada.
Los cambios de plantilla son un poco más significativos de lo que me gustaría, pero felizmente estos cambios consisten en gran medida en nuevas ubicaciones para las cosas y páginas adicionales.
Como se mencionó, el código central es bastante mínimo y toda la funcionalidad de salida se lleva a cabo mediante complementos.
El núcleo llamará a los siguientes métodos si están presentes en los complementos:
on_db_createon_db_openon_inserton_initiateon_generateon_initiate , excepto que se garantiza que los métodos de complemento anteriores se hayan llamado antes de que se invoque on_generate .