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

Diff for /mandoc/html.c between version 1.246 and 1.250

version 1.246, 2018/12/15 19:30:26 version 1.250, 2019/01/07 07:26:29
Line 1 
Line 1 
 /*      $Id$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011-2015, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2011-2015, 2017-2019 Ingo Schwarze <schwarze@openbsd.org>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
Line 78  static const struct htmldata htmltags[TAG_MAX] = {
Line 78  static const struct htmldata htmltags[TAG_MAX] = {
         {"dl",          HTML_NLALL | HTML_INDENT},          {"dl",          HTML_NLALL | HTML_INDENT},
         {"dt",          HTML_NLAROUND},          {"dt",          HTML_NLAROUND},
         {"dd",          HTML_NLAROUND | HTML_INDENT},          {"dd",          HTML_NLAROUND | HTML_INDENT},
           {"p",           HTML_NLAROUND | HTML_INDENT},
         {"pre",         HTML_NLALL | HTML_NOINDENT},          {"pre",         HTML_NLALL | HTML_NOINDENT},
         {"var",         0},          {"var",         0},
         {"cite",        0},          {"cite",        0},
Line 117  static void  print_ctag(struct html *, struct tag *);
Line 118  static void  print_ctag(struct html *, struct tag *);
 static  int      print_escape(struct html *, char);  static  int      print_escape(struct html *, char);
 static  int      print_encode(struct html *, const char *, const char *, int);  static  int      print_encode(struct html *, const char *, const char *, int);
 static  void     print_href(struct html *, const char *, const char *, int);  static  void     print_href(struct html *, const char *, const char *, int);
 static  void     print_metaf(struct html *, enum mandoc_esc);  
   
   
 void *  void *
Line 210  print_gen_head(struct html *h)
Line 210  print_gen_head(struct html *h)
         print_tagq(h, t);          print_tagq(h, t);
 }  }
   
 static void  void
 print_metaf(struct html *h, enum mandoc_esc deco)  print_metaf(struct html *h, enum mandoc_esc deco)
 {  {
         enum htmlfont    font;          enum htmlfont    font;
Line 236  print_metaf(struct html *h, enum mandoc_esc deco)
Line 236  print_metaf(struct html *h, enum mandoc_esc deco)
                 font = HTMLFONT_NONE;                  font = HTMLFONT_NONE;
                 break;                  break;
         default:          default:
                 abort();                  return;
         }          }
   
         if (h->metaf) {          if (h->metaf) {
Line 266  print_metaf(struct html *h, enum mandoc_esc deco)
Line 266  print_metaf(struct html *h, enum mandoc_esc deco)
         }          }
 }  }
   
   void
   html_close_paragraph(struct html *h)
   {
           struct tag      *t;
   
           for (t = h->tag; t != NULL; t = t->next) {
                   if (t->tag == TAG_P || t->tag == TAG_PRE) {
                           print_tagq(h, t);
                           break;
                   }
           }
   }
   
   /*
    * ROFF_nf switches to no-fill mode, ROFF_fi to fill mode.
    * TOKEN_NONE does not switch.  The old mode is returned.
    */
   enum roff_tok
   html_fillmode(struct html *h, enum roff_tok want)
   {
           struct tag      *t;
           enum roff_tok    had;
   
           for (t = h->tag; t != NULL; t = t->next)
                   if (t->tag == TAG_PRE)
                           break;
   
           had = t == NULL ? ROFF_fi : ROFF_nf;
   
           if (want != had) {
                   switch (want) {
                   case ROFF_fi:
                           print_tagq(h, t);
                           break;
                   case ROFF_nf:
                           html_close_paragraph(h);
                           print_otag(h, TAG_PRE, "");
                           break;
                   case TOKEN_NONE:
                           break;
                   default:
                           abort();
                   }
           }
           return had;
   }
   
 char *  char *
 html_make_id(const struct roff_node *n, int unique)  html_make_id(const struct roff_node *n, int unique)
 {  {
Line 787  print_tagq(struct html *h, const struct tag *until)
Line 834  print_tagq(struct html *h, const struct tag *until)
   
         while ((tag = h->tag) != NULL) {          while ((tag = h->tag) != NULL) {
                 print_ctag(h, tag);                  print_ctag(h, tag);
                 if (until && tag == until)                  if (tag == until)
                         return;                          return;
         }          }
 }  }
   
   /*
    * Close out all open elements up to but excluding suntil.
    * Note that a paragraph just inside stays open together with it
    * because paragraphs include subsequent phrasing content.
    */
 void  void
 print_stagq(struct html *h, const struct tag *suntil)  print_stagq(struct html *h, const struct tag *suntil)
 {  {
         struct tag      *tag;          struct tag      *tag;
   
         while ((tag = h->tag) != NULL) {          while ((tag = h->tag) != NULL) {
                 if (suntil && tag == suntil)                  if (tag == suntil ||
                       (tag->next == suntil &&
                        (tag->tag == TAG_P || tag->tag == TAG_PRE)))
                         return;                          return;
                 print_ctag(h, tag);                  print_ctag(h, tag);
         }          }
 }  
   
 void  
 print_paragraph(struct html *h)  
 {  
         struct tag      *t;  
   
         t = print_otag(h, TAG_DIV, "c", "Pp");  
         print_tagq(h, t);  
 }  }
   
   

Legend:
Removed from v.1.246  
changed lines
  Added in v.1.250

CVSweb