Janet 1.39.1-e9c6678 Documentation
(Other Versions: 1.38.0 1.37.1 1.36.0 1.35.0 1.34.0 1.31.0 1.29.1 1.28.0 1.27.0 1.26.0 1.25.1 1.24.0 1.23.0 1.22.0 1.21.0 1.20.0 1.19.0 1.18.1 1.17.1 1.16.1 1.15.0 1.13.1 1.12.2 1.11.1 1.10.1 1.9.1 1.8.1 1.7.0 1.6.0 1.5.1 1.5.0 1.4.0 1.3.1 )

temple

HTML templates for Janet.

Simplified version of Mendoza's template system that is cleaner and easier to use. Templates can be used recursively, and output is printed via print, so goes to (dyn :out).

Expands on the mendoza templates with the {- ... -} brackets, which do non-escaped substitution, so temple can be used for formats besides HTML. Also exposes the escape function inside templates for HTML escaping if you want to manually print to template output.

Example

foo.temple

{$ (def n 20) # Run at template compile time $}
<html>
  <body>
    {{ (string/repeat "<>" n) # HTML escaped }}
    <ul>
      {% (each x (range n) (print "<li>" x " " (args :a) "</li>")) # No auto-print %}
    </ul>
    {- (string/repeat "<span>1</span>" n) # Not HTML escaped -}
  </body>
</html>

main.janet

(import temple)
(temple/add-loader)

(import ./foo :as foo)
(foo/render :a "hello")

There is one more involved example in /janet-lang/spork/examples/temple/. You can run it with janet examples/temple/example.janet.

Reference

temple/add-loader temple/base-env temple/compile temple/create


temple/add-loader function source
(add-loader)

Adds the custom template loader to Janet's module/loaders and update module/paths.

temple/base-env table source
Base environment for rendering

temple/compile function source
(compile str)

Compile a Temple template into a function which will return a
rendered buffer.

The resulting function should receive the template arguments in the
&keys format.

temple/create function source
(create source &opt where)

Compile a template string into a function. Optionally provide a location where the source is from to improve debugging. Returns the template function.