public
Description: (Work in progress.) A blog storage engine based on git.
Homepage:
Clone URL: git://github.com/emk/blogitr.git
name age message
file .document Sat Apr 18 07:46:05 -0700 2009 Initial commit to blogitr. [emk]
file .gitignore Sun Apr 19 05:37:00 -0700 2009 Add specdoc output to RDoc This makes it easie... [emk]
file LICENSE Sun Apr 19 05:36:45 -0700 2009 Add basic RDoc documentation [emk]
file README.rdoc Loading commit data...
file Rakefile
file VERSION.yml
file blogitr.gemspec
directory lib/
directory spec/
README.rdoc

Blogitr

Blogitr is an experimental blog storage engine based on git. So far, this is just a rough sketch of an idea—nothing here is actually usable yet. Blogitr is intended to replace the app/models subdirectory of a typical blogging application.

What Blogitr isn’t intended to be:

  1. A static site generator.
  2. A dynamic site application.

Blogitr is inspired by Jekyll and Typo. It should be relatively easy to export blog posts from Typo or Mephisto for use with Blogitr, because the underlying conceptual models are very similar.

API stability

The APIs provided by this library will change without warning until version 0.2 is released.

Article format

An example Blogitr article:

  title: Metaprogramming tips

  Ruby supports class-based metaprogramming, which offers many of the
  advantages of LISP macros.

  <!--more-->

  The Sinatra web framework, for example, uses top-level functions
  such as @get@ to declare how to respond to HTTP requests:

  <macro:code lang="ruby">
  get "/" do
    "Welcome to my website!"
  end
  </macro>

Note that the code macro is not currently supplied by Blogitr. It could, however, be implemented by subclassing Blogitr::Macro.

Repository layout

Here’s an example repository:

  blog.yml
  2009/04/18/1312-metaprogramming-tips.markdown
  2009/04/19/0947-my-most-recent-post.textile

The top-level blog.yml file contains information about the blog. Individual blog posts are stored in files with names of the form:

  YYYY/MM/DD/HHMM-PERMALINK.FORMAT

Note that the date is stored in the blog’s timezone, not in GMT.

What’s been implemented

  1. Document metadata (stored as YAML headers).
  2. Extended content (using the WordPress <!—more—> convention).
  3. Pluggable text filters, with out-of-the box support for Textile, Markdown and raw HTML.
  4. Pluggable macros for generating custom HTML. These work like <typo:code>.
  5. Loading a blog’s metadata.
  6. Loading a blog’s articles.

Copyright

Copyright 2009 Eric Kidd. See LICENSE for details.