HTML2PATS is a tool for converting HTML with embedded ATS2 code into ATS2 code
HTML2PATS can be used as a templating engine or as a preprocessor (when memory safety & runtime efficiency are highly sought after). HTML2PATS can be thought of as a tool for giving a nicer syntax to a class of functions for constructing HTML (fragments).
$E
to expand it to the
expression E
, where E
stands for some
alphanumeric identifier. For instance: the value of
parameter $t
evaluates
to String Parameter.${E}
if E
stands for some
more complex expression. For instance, the
expression ${(if t="" then "yes" else
"no"):string}
, when evaluated in the context of
a style
attribute, should make this text blue.\
to escape a backslash, as
follows: \\
Comments will be retained as-is.
The length of the passed-in list is 4 (evaluated
using a function
call: ${length(xs)}
)
Finally, it is possible to locally implement template functions.
The ats-call
tag is used to call a template function
(with specified template arguments listed in tmpargs and dynamic
arguments listed in dynargs). Below, int;HTMLprint
is translated to: <int><HTMLprint>
.
The ats-impl
tag is used for implementing a function
template locally, only visible to the
enclosing ats-call
.
<ats-call fun="list_vt_foreach_env" tmpargs="int;HTMLprint" dynargs="xs, out"> <ats-impl tmp="list_vt_foreach$fwork" tmpargs="int;HTMLprint" dynargs="x, out"> <li>$x</li> </ats-impl> </ats-call>
For instance, the result of evaluating the above code fragment is given below:
It is possible to overload the symbol htmlprint
in
ATS to provide HTML printers for user-defined data types. To be
covered elsewhere.
The API provided by the library htmlprint
is
documented elsewhere (nowhere currently, to be precise).
A function htmlprint_unsafe_inject
is provided
that allows for injecting strings as-is, with no escaping. Use at
your own risk.
The license is 3-clause BSD.
Author: Artyom Shalkhakov (artyom DOT shalkhakov AT gmail DOT com)