License: LLGPL
Homepage: http://lisp.ystok.ru/yhtml/html-template.html.
YHTML-Template is a part of YstokHTML collection. It accepts more "Lispy" expressions and provides the following extensions to the original HTML-TEMPLATE code.
- A Lisp form in place of "plane attribute" is allowed. Forms are read by the standard read function. All starting tags (except
TMPL_INCLUDE) accept forms
instead of "old style" attributes. The *attributes-are-lisp-forms* special variable was introduced.
Bind or set it to NIL to treating those tags in the compatibility mode.
template-eval was introduced.
It is a simple evaluator akin to the standard eval function except for:
- A limited number of special-forms is supported, namely:
IF WHEN UNLESS AND OR NOT QUOTE.
symbol-value.
TMPL_EVAL tag and create-eval-printer were introduced;
the former should be used instead of the TMPL_VAR tag.*format-non-strings* has got an additional meaning.
If it equals to T, the result is produced by means of
princ-to-string, i.e. (format nil "~A" ...).If it is true but not equals to T, the value must be a single-parameter function, which returns two values:
(1) a string resulted from its argument, and optionally
(2) do-not-modify flag controlling whether
*string-modifier*
is applied afterwards.The truth as second value can prevent the result of converting from predefined format, e.g. LHTML, from further escaping.
TMPL_ELSE and all ending tags /TMPL_... can
embed an optional text
between the tag name and the closing marker "-->". This text is intended
for readability only and completely ignored by the template parser.
For example: <!-- /TMPL_LOOP rows -->TMPL_ELIF tag was introduced to allow
a more concise code. In full, now the "if" pattern looks like:
!-- TMPL_IF condition_1 -- text_1 !-- TMPL_ELIF condition_2 -- text_2 ... !-- TMPL_ELSE -- text_else !-- /TMPL_IF --