grackle icon indicating copy to clipboard operation
grackle copied to clipboard

A static blog generator written in Lua

This is an in-progress static website/blog generator.

Don't use it yet. I'm not done.

In lieu of documentation, for now here are a couple of relavant points:

  • Implemented in Lua.
  • Heavily oriented around convention over configuration.
  • Templates can be Cosmo, Haml, Markdown, and others to come.
  • All files can have arbitrary Lua header blocks to set up local template variables, or do pretty much whatever you want.
  • Will come with some helpers for building common tags, doing pagination, etc.
  • Will come with a scaffold generator to create common types of sites.
  • Will support sites with any number of different types of syndicated content / feeds.
  • Will support building large colletions of similar pages out of an SQLite database.
  • Global configuration is done via headers in the main layout file; there's no "config" file.

In the mean time, if you want to see what this does, take a look at the files in the sample directory and the output of running the tests:

------------------------------------------------------------------------
The Grackle app:
can load a directory of template files                               [P]
performs initialization tasks                                        [P]
generates the site                                                   [P]
------------------------------------------------------------------------
------------------------------------------------------------------------
Grackle templates:
have a base name                                                     [P]
have a format, defaulting to 'html'                                  [P]
have a renderer taken from the file extension                        [P]
have a layout renderer                                               [P]
have a dir name matching its relative location on disk               [P]
have a site_dir matching its relative target location on disk        [P]
have a site_path matching target file name and relative uri          [P]
have a path matching their location relative to the source dir       [P]
have contents                                                        [P]
have headers                                                         [P]
can evaluate their headers                                           [P]
a content template:
  specifies that it is content                                       [P]
  should default to a main layout matching its renderer              [P]
  if Markdown, should use the default layout renderer                [P]
  can use headers to specify layout-less rendering                   [P]
  for rendering:
    can be Cosmo                                                     [P]
    can be Haml                                                      [P]
    can be Markdown                                                  [P]
a layout template:
  specifes that it is a layout                                       [P]
  can be a sub-layout                                                [P]
  should not have a layout if it is a main layout                    [P]
  for rendering:
    can be Cosmo                                                     [P]
    can be Haml                                                      [P]
a partial template:
  specifes that it is a partial                                      [P]
------------------------------------------------------------------------
27 tests 27 passed 35 assertions 0 failed 0 errors 0 unassertive 0 pending