diff options
author | default <nobody@localhost> | 2023-12-03 11:43:40 +0100 |
---|---|---|
committer | default <nobody@localhost> | 2023-12-03 11:43:40 +0100 |
commit | 8b3471afb7adf38d31d7ee5220be0930960330aa (patch) | |
tree | 1490d399b14f5c0592b1a0ddfa30a23d85828257 /xs_html.h | |
parent | f1afe4416dabfbba1e34b4c82742dbc76cab0194 (diff) |
Backport from xs.
Diffstat (limited to 'xs_html.h')
-rw-r--r-- | xs_html.h | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -168,8 +168,11 @@ static xs_html *_xs_html_tag_t(xs_html_type type, char *tag, xs_html *var[]) { xs_html *a = XS_HTML_NEW(); - a->type = type; - a->content = xs_dup(tag); + a->type = type; + + /* a tag can be NULL, to be a kind of 'wrapper' */ + if (tag) + a->content = xs_dup(tag); _xs_html_add(a, var); @@ -197,7 +200,8 @@ void xs_html_render_f(xs_html *h, FILE *f) switch (h->type) { case XS_HTML_TAG: case XS_HTML_SCTAG: - fprintf(f, "<%s", h->content); + if (h->content) + fprintf(f, "<%s", h->content); /* render the attributes */ st = h->f_attr; @@ -209,10 +213,12 @@ void xs_html_render_f(xs_html *h, FILE *f) if (h->type == XS_HTML_SCTAG) { /* self-closing tags should not have subtags */ - fprintf(f, "/>\n"); + if (h->content) + fprintf(f, "/>"); } else { - fprintf(f, ">"); + if (h->content) + fprintf(f, ">"); /* render the subtags */ st = h->f_tag; @@ -222,7 +228,8 @@ void xs_html_render_f(xs_html *h, FILE *f) st = nst; } - fprintf(f, "</%s>", h->content); + if (h->content) + fprintf(f, "</%s>", h->content); } break; |