Watch Out

Important things to watch out for

Template files must live in app/templates

Only that directory is scanned automatically by cweb build.

The render function must be in the header

Without char* template_name(params); inside <%header ... %>, no correct .c file can be generated.

External CSS only exists via <cstyle>

Normal <style> stays inline. A _css function is only generated from <cstyle> without setinline.

Always annotate numbers and special types explicitly

{x} without a type is only really suitable for string-like expressions.

Do not expect {...} interpolation in CSS/JS

Curly-brace interpolation is deliberately disabled there. use <% %> there (example: <% if (data->is_admin) { %>)

<cloop> is currently string-oriented

The loop element is always as const char * generated at the moment.

The CMake stamp is currently coarse-grained

Template changes are not tracked cleanly as dependencies. If in doubt, run cweb build explicitly again.

build/build.h is more of an auxiliary artifact than a core mechanism

Actual template usage in the example works through direct includes of the individual generated headers. The aggregated build/build.h is generated, but it is not strictly required for template rendering itself but recommend to include.