Home

Awesome

Groucho

Groucho is a Lua implementation of mustache, a logic-less templating language, using LPeg (well, re actually) for the dirty work.

For more information about mustache, check out the mustache project page or the mustache manual.

Documentation

There are comments in the code, if that's what you're asking :)

No, they're not LuaDoc-compatible (don't let the --- comments fool you :P). I haven't decided which documentation generator to use yet. LuaDoc doesn't render the docs the way I like, and I don't know what else is out there, so I made my own markup for now.

Testing

telescope looked nice, so I converted the mustache specs to telescope tests. tsc is expected to be called from the test directory.

Usage

The comment on the render function should tell you the nitty-gritty, but for the TL;DR crowd:

groucho exports a function render, which takes a template (a string) and a context (a table), as in the example below:

local result = groucho.render(
  'lorem ipsum {{fill}} yadda yadda {{{yadda}}}{{&nonexistent}}',          -- the template
  { fill = '<forgot what should go here>', yadda = '<random key mash>' })   -- the context

Optionally, it may take a configuration table as an extra parameter:

local result = groucho.render(
  'lorem ipsum {{fill}} yadda yadda {{{yadda}}}{{&nonexistent}}',  -- the template
  { fill = '<forgot what should go here>', 
    yadda = '<random key mash>' },         -- the context
  { template_path = '../',
    template_extension = 'mustache' })     -- the configuration table

The result is the template with its variables resolved against the context.

groucho also exports the re grammar (called grammar, appropriately enough), which has some hooks which need to be filled for the pattern to be constructed. They are also comment-documented.

To do

Why?

To be honest, I just wanted an excuse to fool around with re :)

License

See the LICENSE file.