diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-04-04 16:15:58 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-04-04 16:15:58 +0000 |
commit | 222e2bece750c8ff5e15f67fb3015dc4f4365f35 (patch) | |
tree | 87e0fbe002369635dcda2e6cb44497a02a41b14e /mdoc_html.c | |
parent | 062dbcb006aaea832934e8902ef9f1051f5dba00 (diff) | |
download | mandoc-222e2bece750c8ff5e15f67fb3015dc4f4365f35.tar.gz |
Fully fix the `Rv' and `Ex' handlers for -T[x]html and -Tascii. This
includes an unreported bug where `Ex' wasn't properly adding a newline.
Diffstat (limited to 'mdoc_html.c')
-rw-r--r-- | mdoc_html.c | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/mdoc_html.c b/mdoc_html.c index bfd80f48..c18ca84f 100644 --- a/mdoc_html.c +++ b/mdoc_html.c @@ -1086,9 +1086,9 @@ mdoc_bl_pre(MDOC_ARGS) static int mdoc_ex_pre(MDOC_ARGS) { - const struct mdoc_node *nn; - struct tag *t; - struct htmlpair tag; + struct tag *t; + struct htmlpair tag; + int nchild; if (n->prev) print_otag(h, TAG_BR, 0, NULL); @@ -1096,22 +1096,25 @@ mdoc_ex_pre(MDOC_ARGS) PAIR_CLASS_INIT(&tag, "utility"); print_text(h, "The"); - for (nn = n->child; nn; nn = nn->next) { + + nchild = n->nchild; + for (n = n->child; n; n = n->next) { + assert(MDOC_TEXT == n->type); + t = print_otag(h, TAG_B, 1, &tag); - print_text(h, nn->string); + print_text(h, n->string); print_tagq(h, t); - h->flags |= HTML_NOSPACE; - - if (nn->next && NULL == nn->next->next) - print_text(h, ", and"); - else if (nn->next) + if (nchild > 2 && n->next) { + h->flags |= HTML_NOSPACE; print_text(h, ","); - else - h->flags &= ~HTML_NOSPACE; + } + + if (n->next && NULL == n->next->next) + print_text(h, "and"); } - if (n->child && n->child->next) + if (nchild > 1) print_text(h, "utilities exit"); else print_text(h, "utility exits"); @@ -1775,16 +1778,18 @@ mdoc_rv_pre(MDOC_ARGS) if (n->prev) print_otag(h, TAG_BR, 0, NULL); + PAIR_CLASS_INIT(&tag, "fname"); + print_text(h, "The"); nchild = n->nchild; for (n = n->child; n; n = n->next) { assert(MDOC_TEXT == n->type); - PAIR_CLASS_INIT(&tag, "fname"); t = print_otag(h, TAG_B, 1, &tag); print_text(h, n->string); print_tagq(h, t); + h->flags |= HTML_NOSPACE; print_text(h, "()"); |