Module pl.template

A template preprocessor.

Originally by Ricki Lake

There are two rules:

  • lines starting with # are Lua
  • otherwise, $(expr) is the result of evaluating expr

Example:

#  for i = 1,3 do
   $(i) Hello, Word!
#  end
===>
1 Hello, Word!
2 Hello, Word!
3 Hello, Word!

Other escape characters can be used, when the defaults conflict with the output language.

> for _,n in pairs{'one','two','three'} do
static int l_${n} (luaState *state);
> end

See the Guide.

Dependencies: pl.utils

Functions

substitute (str[, env]) expand the template using the specified environment.
ct:render ([env[, parent[, db]]]) executes the previously compiled template and renders it.
compile (str[, opts]) compiles the template.


Functions

substitute (str[, env])
expand the template using the specified environment. This function will compile and render the template. For more performant recurring usage use the two step approach by using compile and ct:render.

Parameters:

  • str string the template string
  • env the environment. This table has the following special fields:
    • _parent table continue looking up in this table (e.g. _parent=_G). (default nil)
    • _brackets string bracket pair that wraps inline Lua expressions. (default "()")
    • _escape string character marking Lua lines. (default "#")
    • _inline_escape string character marking inline Lua expression. (default "$")
    • _chunk_name string chunk name for loaded templates, used if there is an error in Lua code. (default "TMP")
    • _debug boolean if truthy, the generated code will be printed upon a render error. (default false)

Returns:

  1. string render result
  2. nil
  3. string source_code (only if 'env._debug' was truthy).

Or

  1. nil
  2. string error message
  3. string source_code (only if 'env._debug' was truthy).
ct:render ([env[, parent[, db]]])
executes the previously compiled template and renders it.

Parameters:

  • env table the environment. (optional)
  • parent table continue looking up in this table (e.g. parent=_G). (optional)
  • db boolean if thruthy, it will print the code upon a render error (provided the template was compiled with the debug option). (optional)

Returns:

  1. string render result
  2. nil
  3. string source_code (only if 'env._debug' was truthy).

Or

  1. nil
  2. string error message
  3. string source_code (only if 'env._debug' was truthy).

Usage:

    local ct, err = template.compile(my_template)
    local rendered , err = ct:render(my_env, parent)
compile (str[, opts])
compiles the template. Returns an object that can repeatedly be rendered without parsing/compiling the template again. Preserves the line layout of the template so that line numbers in error messages should point to the correct lines in the source string.

Parameters:

  • str string the template string
  • opts the compilation options to use. This table supports the following options:
    • chunk_name string chunk name for loaded templates, used if there is an error in Lua code. (default "TMP")
    • escape string character marking Lua lines. (default "#")
    • inline_escape string character marking inline Lua expression. (default "$")
    • inline_brackets string bracket pair that wraps inline Lua expressions. (default "()")
    • newline boolean if truthy, newlines will be stripped from text in the template. (default false)
    • debug boolean if truthy, the generated code will be printed upon a render error. (default false)

Returns:

    ct compiled template object

Or

  1. nil
  2. string error message
  3. string source_code

Usage:

    local ct, err = template.compile(my_template)
    local rendered , err = ct:render(my_env, parent)
generated by LDoc 1.5.0