]> git.cameronkatri.com Git - mandoc.git/commitdiff
implement .An -split and -nosplit
authorIngo Schwarze <schwarze@openbsd.org>
Tue, 7 Mar 2017 13:09:27 +0000 (13:09 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Tue, 7 Mar 2017 13:09:27 +0000 (13:09 +0000)
mdoc_markdown.c
regress/mdoc/An/Makefile
regress/mdoc/An/break.out_markdown [new file with mode: 0644]
regress/mdoc/Aq/Makefile
regress/mdoc/Aq/author.out_markdown [new file with mode: 0644]

index 4523a4a462f7cc79ca34170ea1b923f2113ea07b..79d1f3dcec27a0bbcdc22565b13af6026b44a834 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_markdown.c,v 1.4 2017/03/07 12:39:01 schwarze Exp $ */
+/*     $Id: mdoc_markdown.c,v 1.5 2017/03/07 13:09:27 schwarze Exp $ */
 /*
  * Copyright (c) 2017 Ingo Schwarze <schwarze@openbsd.org>
  *
@@ -51,6 +51,7 @@ static        int      md_pre_raw(struct roff_node *);
 static int      md_pre_word(struct roff_node *);
 static int      md_pre_skip(struct roff_node *);
 static void     md_pre_syn(struct roff_node *);
+static int      md_pre_An(struct roff_node *);
 static int      md_pre_Ap(struct roff_node *);
 static int      md_pre_Bd(struct roff_node *);
 static int      md_pre_Bk(struct roff_node *);
@@ -115,7 +116,7 @@ static      const struct md_act md_acts[MDOC_MAX + 1] = {
        { NULL, NULL, NULL, NULL, NULL }, /* El */
        { NULL, md_pre_It, md_post_It, NULL, NULL }, /* It */
        { NULL, md_pre_raw, md_post_raw, "*", "*" }, /* Ad */
-       { NULL, NULL, NULL, NULL, NULL }, /* An */
+       { NULL, md_pre_An, NULL, NULL, NULL }, /* An */
        { NULL, md_pre_raw, md_post_raw, "*", "*" }, /* Ar */
        { NULL, md_pre_raw, md_post_raw, "**", "**" }, /* Cd */
        { NULL, md_pre_raw, md_post_raw, "**", "**" }, /* Cm */
@@ -235,6 +236,8 @@ static      int      outflags;
 #define        MD_sp            (1 << 5)  /* Insert a paragraph break. */
 #define        MD_Sm            (1 << 6)  /* Horizontal spacing mode. */
 #define        MD_Bk            (1 << 7)  /* Word keep mode. */
+#define        MD_An_split      (1 << 8)  /* Author mode is "split". */
+#define        MD_An_nosplit    (1 << 9)  /* Author mode is "nosplit". */
 
 static int      escflags; /* Escape in generated markdown code: */
 #define        ESC_BOL  (1 << 0)  /* "#*+-" near the beginning of a line. */
@@ -781,6 +784,28 @@ md_pre_syn(struct roff_node *n)
        }
 }
 
+static int
+md_pre_An(struct roff_node *n)
+{
+       switch (n->norm->An.auth) {
+       case AUTH_split:
+               outflags &= ~MD_An_nosplit;
+               outflags |= MD_An_split;
+               return 0;
+       case AUTH_nosplit:
+               outflags &= ~MD_An_split;
+               outflags |= MD_An_nosplit;
+               return 0;
+       default:
+               if (outflags & MD_An_split)
+                       outflags |= MD_br;
+               else if (n->sec == SEC_AUTHORS &&
+                   ! (outflags & MD_An_nosplit))
+                       outflags |= MD_An_split;
+               return 1;
+       }
+}
+
 static int
 md_pre_Ap(struct roff_node *n)
 {
@@ -1347,6 +1372,10 @@ static int
 md_pre_Sh(struct roff_node *n)
 {
        switch (n->type) {
+       case ROFFT_BLOCK:
+               if (n->sec == SEC_AUTHORS)
+                       outflags &= ~(MD_An_split | MD_An_nosplit);
+               break;
        case ROFFT_HEAD:
                outflags |= MD_sp;
                md_rawword(n->tok == MDOC_Sh ? "#" : "##");
index b061bf761bf0166790d41cf421a4aa292c75449d..da42571aaeca7695f5723958cf1de106a90dde04 100644 (file)
@@ -2,5 +2,6 @@
 
 REGRESS_TARGETS        = break
 LINT_TARGETS   = break
+MARKDOWN_TARGETS = break
 
 .include <bsd.regress.mk>
diff --git a/regress/mdoc/An/break.out_markdown b/regress/mdoc/An/break.out_markdown
new file mode 100644 (file)
index 0000000..8605f69
--- /dev/null
@@ -0,0 +1,47 @@
+AN-BREAK(1) - General Commands Manual
+
+# NAME
+
+**An-break** - line breaking of the author macro
+
+# DESCRIPTION
+
+inline is the default:
+Kristaps,
+Ingo,
+and
+Joerg.
+empty
+trailing
+.
+
+split mode:  
+Kristaps  
+Ingo  
+Joerg
+
+empty  
+trailing  
+.
+
+# AUTHORS
+
+split mode is the default:
+Kristaps  
+Ingo  
+Joerg
+
+empty  
+trailing  
+.
+
+inline:
+Kristaps,
+Ingo,
+and
+Joerg.
+empty
+trailing
+.
+
+OpenBSD - February 5, 2015
index ac59b314b88b5adfdbe035a3dd5e931da9e658f7..d0bcc85aa0038623f1ff7ddf64fa5ab4fbc051a8 100644 (file)
@@ -2,6 +2,6 @@
 
 REGRESS_TARGETS        = author empty
 UTF8_TARGETS   = author empty
-MARKDOWN_TARGETS = empty
+MARKDOWN_TARGETS = author empty
 
 .include <bsd.regress.mk>
diff --git a/regress/mdoc/Aq/author.out_markdown b/regress/mdoc/Aq/author.out_markdown
new file mode 100644 (file)
index 0000000..292eb5c
--- /dev/null
@@ -0,0 +1,16 @@
+AQ-AUTHOR(1) - General Commands Manual
+
+# NAME
+
+**Aq-author** - angle brackets after an author name macro
+
+# DESCRIPTION
+
+Name &lt;<addr>&gt; Name &lt;<addr>&gt;
+
+# AUTHORS
+
+Name &lt;<addr>&gt;  
+Name &lt;<addr>&gt;
+
+OpenBSD - November 19, 2014