]> git.cameronkatri.com Git - mandoc.git/commitdiff
implement .An -[no]split for -Thtml
authorIngo Schwarze <schwarze@openbsd.org>
Wed, 17 Sep 2014 19:55:59 +0000 (19:55 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Wed, 17 Sep 2014 19:55:59 +0000 (19:55 +0000)
html.h
mdoc_html.c

diff --git a/html.h b/html.h
index 1f0a16d30cf46844188c60aa0b48379548b5d5e8..d2c87c7a0c5f6fa4d5d53e17cfc19eed9a2c3935 100644 (file)
--- a/html.h
+++ b/html.h
@@ -1,4 +1,4 @@
-/*     $Id: html.h,v 1.53 2014/08/14 00:31:43 schwarze Exp $ */
+/*     $Id: html.h,v 1.54 2014/09/17 19:55:59 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -119,6 +119,8 @@ struct      html {
 #define        HTML_NONOSPACE   (1 << 4) /* never add spaces */
 #define        HTML_LITERAL     (1 << 5) /* literal (e.g., <PRE>) context */
 #define        HTML_SKIPCHAR    (1 << 6) /* skip the next character */
+#define        HTML_NOSPLIT     (1 << 7) /* do not break line before .An */
+#define        HTML_SPLIT       (1 << 8) /* break line before .An */
        struct tagq       tags; /* stack of open tags */
        struct rofftbl    tbl; /* current table */
        struct tag       *tblt; /* current open table scope */
index 5b0497a8b3db6dda79afc80dab132a5e5aa3ad23..d9a707449a425820853354dcba9c05a38661e392 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_html.c,v 1.199 2014/08/21 12:57:17 schwarze Exp $ */
+/*     $Id: mdoc_html.c,v 1.200 2014/09/17 19:55:59 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -570,12 +570,18 @@ mdoc_sh_pre(MDOC_ARGS)
 {
        struct htmlpair  tag;
 
-       if (MDOC_BLOCK == n->type) {
+       switch (n->type) {
+       case MDOC_BLOCK:
                PAIR_CLASS_INIT(&tag, "section");
                print_otag(h, TAG_DIV, 1, &tag);
                return(1);
-       } else if (MDOC_BODY == n->type)
+       case MDOC_BODY:
+               if (n->sec == SEC_AUTHORS)
+                       h->flags &= ~(HTML_SPLIT|HTML_NOSPLIT);
                return(1);
+       default:
+               break;
+       }
 
        bufinit(h);
        bufcat(h, "x");
@@ -1258,7 +1264,25 @@ mdoc_an_pre(MDOC_ARGS)
 {
        struct htmlpair tag;
 
-       /* TODO: -split and -nosplit (see termp_an_pre()). */
+       if (n->norm->An.auth == AUTH_split) {
+               h->flags &= ~HTML_NOSPLIT;
+               h->flags |= HTML_SPLIT;
+               return(0);
+       }
+       if (n->norm->An.auth == AUTH_nosplit) {
+               h->flags &= ~HTML_SPLIT;
+               h->flags |= HTML_NOSPLIT;
+               return(0);
+       }
+
+       if (n->child == NULL)
+               return(0);
+
+       if (h->flags & HTML_SPLIT)
+               print_otag(h, TAG_BR, 0, NULL);
+
+       if (n->sec == SEC_AUTHORS && ! (h->flags & HTML_NOSPLIT))
+               h->flags |= HTML_SPLIT;
 
        PAIR_CLASS_INIT(&tag, "author");
        print_otag(h, TAG_SPAN, 1, &tag);