From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from krisdoz.my.domain (kristaps@localhost [127.0.0.1]) by krisdoz.my.domain (8.14.3/8.14.3) with ESMTP id p34GFwns006750 for ; Mon, 4 Apr 2011 12:15:58 -0400 (EDT) Received: (from kristaps@localhost) by krisdoz.my.domain (8.14.3/8.14.3/Submit) id p34GFwQg026144; Mon, 4 Apr 2011 12:15:58 -0400 (EDT) Date: Mon, 4 Apr 2011 12:15:58 -0400 (EDT) Message-Id: <201104041615.p34GFwQg026144@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: kristaps@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: Fully fix the `Rv' and `Ex' handlers for -T[x]html and -Tascii. X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- 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. Modified Files: -------------- mdocml: mdoc_term.c mdoc_html.c Revision Data ------------- Index: mdoc_html.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_html.c,v retrieving revision 1.159 retrieving revision 1.160 diff -Lmdoc_html.c -Lmdoc_html.c -u -p -r1.159 -r1.160 --- mdoc_html.c +++ 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, "()"); Index: mdoc_term.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_term.c,v retrieving revision 1.223 retrieving revision 1.224 diff -Lmdoc_term.c -Lmdoc_term.c -u -p -r1.223 -r1.224 --- mdoc_term.c +++ mdoc_term.c @@ -1189,11 +1189,11 @@ termp_rv_pre(DECL_ARGS) term_word(p, "The"); nchild = n->nchild; - for (n = n->child; n; n = n->next) { term_fontpush(p, TERMFONT_BOLD); term_word(p, n->string); term_fontpop(p); + p->flags |= TERMP_NOSPACE; term_word(p, "()"); @@ -1229,31 +1229,34 @@ termp_rv_pre(DECL_ARGS) static int termp_ex_pre(DECL_ARGS) { - const struct mdoc_node *nn; + int nchild; + term_newln(p); term_word(p, "The"); - for (nn = n->child; nn; nn = nn->next) { + nchild = n->nchild; + for (n = n->child; n; n = n->next) { term_fontpush(p, TERMFONT_BOLD); - term_word(p, nn->string); + term_word(p, n->string); term_fontpop(p); - p->flags |= TERMP_NOSPACE; - if (nn->next && NULL == nn->next->next) - term_word(p, ", and"); - else if (nn->next) + + if (nchild > 2 && n->next) { + p->flags |= TERMP_NOSPACE; term_word(p, ","); - else - p->flags &= ~TERMP_NOSPACE; + } + + if (n->next && NULL == n->next->next) + term_word(p, "and"); } - if (n->child && n->child->next) + if (nchild > 1) term_word(p, "utilities exit"); else term_word(p, "utility exits"); term_word(p, "0 on success, and >0 if an error occurs."); - p->flags |= TERMP_SENTENCE; + p->flags |= TERMP_SENTENCE; return(0); } -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv