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 | |
parent | f1afe4416dabfbba1e34b4c82742dbc76cab0194 (diff) |
Backport from xs.
-rw-r--r-- | html.c | 15 | ||||
-rw-r--r-- | xs_html.h | 19 | ||||
-rw-r--r-- | xs_version.h | 2 |
3 files changed, 23 insertions, 13 deletions
@@ -999,12 +999,15 @@ static xs_html *html_button(char *clss, char *label, char *hint) { xs *c = xs_fmt("snac-btn-%s", clss); - return xs_html_sctag("input", - xs_html_attr("type", "submit"), - xs_html_attr("name", "action"), - xs_html_attr("class", c), - xs_html_attr("value", label), - xs_html_attr("title", hint)); + /* use an NULL tag to separate non-css-classed buttons from one another */ + return xs_html_tag(NULL, + xs_html_sctag("input", + xs_html_attr("type", "submit"), + xs_html_attr("name", "action"), + xs_html_attr("class", c), + xs_html_attr("value", label), + xs_html_attr("title", hint)), + xs_html_text("\n")); } @@ -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; diff --git a/xs_version.h b/xs_version.h index 83dfedc..9a2f401 100644 --- a/xs_version.h +++ b/xs_version.h @@ -1 +1 @@ -/* 8994b1ef8501039ec97a388680ee361138e34554 2023-11-27T11:45:06+01:00 */ +/* b26300d01136fad22ee774d20a7da5b299f30d13 2023-12-03T11:38:09+01:00 */ |