[BACK]Return to mdoc_markdown.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/mdoc_markdown.c between version 1.8 and 1.14

version 1.8, 2017/03/07 15:31:24 version 1.14, 2017/03/08 19:23:43
Line 244  static int  escflags; /* Escape in generated markdown 
Line 244  static int  escflags; /* Escape in generated markdown 
 #define ESC_BOL  (1 << 0)  /* "#*+-" near the beginning of a line. */  #define ESC_BOL  (1 << 0)  /* "#*+-" near the beginning of a line. */
 #define ESC_NUM  (1 << 1)  /* "." after a leading number. */  #define ESC_NUM  (1 << 1)  /* "." after a leading number. */
 #define ESC_HYP  (1 << 2)  /* "(" immediately after "]". */  #define ESC_HYP  (1 << 2)  /* "(" immediately after "]". */
 #define ESC_PAR  (1 << 3)  /* ")" when "(" is open. */  
 #define ESC_SQU  (1 << 4)  /* "]" when "[" is open. */  #define ESC_SQU  (1 << 4)  /* "]" when "[" is open. */
 #define ESC_FON  (1 << 5)  /* "*" immediately after unrelated "*". */  #define ESC_FON  (1 << 5)  /* "*" immediately after unrelated "*". */
 #define ESC_EOL  (1 << 6)  /* " " at the and of a line. */  #define ESC_EOL  (1 << 6)  /* " " at the and of a line. */
Line 375  md_stack(char c)
Line 374  md_stack(char c)
 static void  static void
 md_preword(void)  md_preword(void)
 {  {
           const char      *cp;
   
         /*          /*
          * If a list block is nested inside a code block or a blockquote,           * If a list block is nested inside a code block or a blockquote,
          * blank lines for paragraph breaks no longer work; instead,           * blank lines for paragraph breaks no longer work; instead,
Line 405  md_preword(void)
Line 406  md_preword(void)
   
         if (outflags & (MD_nl | MD_br | MD_sp)) {          if (outflags & (MD_nl | MD_br | MD_sp)) {
                 putchar('\n');                  putchar('\n');
                 fputs(md_stack('\0'), stdout);                  for (cp = md_stack('\0'); *cp != '\0'; cp++) {
                           putchar(*cp);
                           if (*cp == '>')
                                   putchar(' ');
                   }
                 outflags &= ~(MD_nl | MD_br | MD_sp);                  outflags &= ~(MD_nl | MD_br | MD_sp);
                 escflags = ESC_BOL;                  escflags = ESC_BOL;
                 outcount = 0;                  outcount = 0;
Line 449  md_rawword(const char *s)
Line 454  md_rawword(const char *s)
   
         while (*s != '\0') {          while (*s != '\0') {
                 switch(*s) {                  switch(*s) {
                 case '(':  
                         escflags |= ESC_PAR;  
                         break;  
                 case ')':  
                         escflags |= ~ESC_PAR;  
                         break;  
                 case '*':                  case '*':
                         if (s[1] == '\0')                          if (s[1] == '\0')
                                 escflags |= ESC_FON;                                  escflags |= ESC_FON;
Line 529  md_word(const char *s)
Line 528  md_word(const char *s)
                         bs = escflags & ESC_HYP && !code_blocks;                          bs = escflags & ESC_HYP && !code_blocks;
                         break;                          break;
                 case ')':                  case ')':
                         bs = escflags & ESC_PAR && !code_blocks;                          bs = escflags & ESC_NUM && !code_blocks;
                         break;                          break;
                 case '*':                  case '*':
                 case '[':                  case '[':
Line 700  md_pre_raw(struct roff_node *n)
Line 699  md_pre_raw(struct roff_node *n)
         if ((prefix = md_acts[n->tok].prefix) != NULL) {          if ((prefix = md_acts[n->tok].prefix) != NULL) {
                 md_rawword(prefix);                  md_rawword(prefix);
                 outflags &= ~MD_spc;                  outflags &= ~MD_spc;
                   if (*prefix == '`')
                           code_blocks++;
         }          }
         return 1;          return 1;
 }  }
Line 712  md_post_raw(struct roff_node *n)
Line 713  md_post_raw(struct roff_node *n)
         if ((suffix = md_acts[n->tok].suffix) != NULL) {          if ((suffix = md_acts[n->tok].suffix) != NULL) {
                 outflags &= ~(MD_spc | MD_nl);                  outflags &= ~(MD_spc | MD_nl);
                 md_rawword(suffix);                  md_rawword(suffix);
                   if (*suffix == '`')
                           code_blocks--;
         }          }
 }  }
   
Line 1145  md_pre_It(struct roff_node *n)
Line 1148  md_pre_It(struct roff_node *n)
   
         case ROFFT_HEAD:          case ROFFT_HEAD:
                 bln = n->parent->parent;                  bln = n->parent->parent;
                 if (bln->norm->Bl.comp == 0)                  if (bln->norm->Bl.comp == 0 &&
                       bln->norm->Bl.type != LIST_column)
                         outflags |= MD_sp;                          outflags |= MD_sp;
                 outflags |= MD_nl;                  outflags |= MD_nl;
   
Line 1171  md_pre_It(struct roff_node *n)
Line 1175  md_pre_It(struct roff_node *n)
                         break;                          break;
                 case LIST_enum:                  case LIST_enum:
                         md_preword();                          md_preword();
                         printf("%d.\t", ++bln->norm->Bl.count);                          if (bln->norm->Bl.count < 99)
                                   bln->norm->Bl.count++;
                           printf("%d.\t", bln->norm->Bl.count);
                         escflags &= ~ESC_FON;                          escflags &= ~ESC_FON;
                         break;                          break;
                   case LIST_column:
                           outflags |= MD_br;
                           return 0;
                 default:                  default:
                         return 0;                          return 0;
                 }                  }
Line 1292  md_pre_Lk(struct roff_node *n)
Line 1301  md_pre_Lk(struct roff_node *n)
                 md_rawword("<");                  md_rawword("<");
   
         for (s = link->string; *s != '\0'; s++) {          for (s = link->string; *s != '\0'; s++) {
                 if (strchr("%)<>", *s) != NULL) {                  if (strchr("%()<>", *s) != NULL) {
                         printf("%%%2.2hhX", *s);                          printf("%%%2.2hhX", *s);
                         outcount += 3;                          outcount += 3;
                 } else {                  } else {

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.14

CVSweb