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 --