diff options
author | default <nobody@localhost> | 2023-11-20 20:28:20 +0100 |
---|---|---|
committer | default <nobody@localhost> | 2023-11-20 20:28:20 +0100 |
commit | 1ad4a936496868e770b709f33390c5abce0487da (patch) | |
tree | f30b51eace2de2e68e8dd2bfc3efd3c1b052f9d9 /xs_html.h | |
parent | 4fe2ccd67024afebda5c355243b9a109f4782309 (diff) |
html_actor_icon() uses xs_html.
Diffstat (limited to 'xs_html.h')
-rw-r--r-- | xs_html.h | 44 |
1 files changed, 25 insertions, 19 deletions
@@ -12,12 +12,15 @@ xs_html *xs_html_attr(char *key, char *value); xs_html *xs_html_text(char *content); xs_html *xs_html_raw(char *content); -xs_html *xs_html_add(xs_html *tag, xs_html *data); +xs_html *_xs_html_add(xs_html *tag, xs_html *var[]); +#define xs_html_add(tag, ...) _xs_html_add(tag, (xs_html *[]) { __VA_ARGS__, NULL }) xs_html *_xs_html_tag(char *tag, xs_html *var[]); #define xs_html_tag(tag, ...) _xs_html_tag(tag, (xs_html *[]) { __VA_ARGS__, NULL }) + xs_html *_xs_html_sctag(char *tag, xs_html *var[]); #define xs_html_sctag(tag, ...) _xs_html_sctag(tag, (xs_html *[]) { __VA_ARGS__, NULL }) + xs_str *_xs_html_render(xs_html *h, xs_str *s); #define xs_html_render(h) _xs_html_render(h, xs_str_new(NULL)) @@ -127,28 +130,32 @@ xs_html *xs_html_raw(char *content) } -xs_html *xs_html_add(xs_html *tag, xs_html *data) +xs_html *_xs_html_add(xs_html *tag, xs_html *var[]) /* add data (attrs, tags or text) to a tag */ { - xs_html **first; - xs_html **last; + while (*var) { + xs_html *data = *var++; - if (data->type == XS_HTML_ATTR) { - first = &tag->f_attr; - last = &tag->l_attr; - } - else { - first = &tag->f_tag; - last = &tag->l_tag; - } + xs_html **first; + xs_html **last; - if (*first == NULL) - *first = data; + if (data->type == XS_HTML_ATTR) { + first = &tag->f_attr; + last = &tag->l_attr; + } + else { + first = &tag->f_tag; + last = &tag->l_tag; + } - if (*last != NULL) - (*last)->next = data; + if (*first == NULL) + *first = data; - *last = data; + if (*last != NULL) + (*last)->next = data; + + *last = data; + } return tag; } @@ -162,8 +169,7 @@ static xs_html *_xs_html_tag_t(xs_html_type type, char *tag, xs_html *var[]) a->type = type; a->content = xs_dup(tag); - while (*var) - xs_html_add(a, *var++); + _xs_html_add(a, var); return a; } |