lander/ltm/README.md

33 lines
1.2 KiB
Markdown

# LTM - Lander Template Module
This module provides an interface for generating `char` streams from a given
template.
```html
<body>
<h1>{{ title }}</h1>
<ul>
{{ item start }}
<li><a href="{{ url }}">{{ name }}</a></li>
{{ item end }}
</ul>
</body>
```
The above snippet shows everything the templating language currently offers;
either singular variables (here: `title`) or nested templates (here: `item`).
Note the absence of a loop construct. This is because each variable and nested
template is implicitely already a loop; a variable or a nested template can be
added as many times as needed, and they will appear in the order they were
added.
Template strings are compiled into templates. From a template, an instance can
be created to which the required data can be added to fill in the template.
Instantiating a template does not modify the original template, meaning
templates can be safely used concurrently.
Each inserted variable can get its data from a variety of sources, namely
`char` buffers, files or a custom reader function. The resulting `char` stream
is never fully loaded into memory; an instance can stream its content to a
provided buffer to prevent unnecessary memory usage.