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

Diff for /mandoc/html.c between version 1.256 and 1.257

version 1.256, 2019/08/02 17:06:04 version 1.257, 2019/08/29 17:57:29
Line 42 
Line 42 
 struct  htmldata {  struct  htmldata {
         const char       *name;          const char       *name;
         int               flags;          int               flags;
 #define HTML_NOSTACK     (1 << 0)  #define HTML_INPHRASE    (1 << 0)  /* Can appear in phrasing context. */
 #define HTML_AUTOCLOSE   (1 << 1)  #define HTML_TOPHRASE    (1 << 1)  /* Establishes phrasing context. */
 #define HTML_NLBEFORE    (1 << 2)  #define HTML_NOSTACK     (1 << 2)  /* Does not have an end tag. */
 #define HTML_NLBEGIN     (1 << 3)  #define HTML_NLBEFORE    (1 << 3)  /* Output line break before opening. */
 #define HTML_NLEND       (1 << 4)  #define HTML_NLBEGIN     (1 << 4)  /* Output line break after opening. */
 #define HTML_NLAFTER     (1 << 5)  #define HTML_NLEND       (1 << 5)  /* Output line break before closing. */
   #define HTML_NLAFTER     (1 << 6)  /* Output line break after closing. */
 #define HTML_NLAROUND    (HTML_NLBEFORE | HTML_NLAFTER)  #define HTML_NLAROUND    (HTML_NLBEFORE | HTML_NLAFTER)
 #define HTML_NLINSIDE    (HTML_NLBEGIN | HTML_NLEND)  #define HTML_NLINSIDE    (HTML_NLBEGIN | HTML_NLEND)
 #define HTML_NLALL       (HTML_NLAROUND | HTML_NLINSIDE)  #define HTML_NLALL       (HTML_NLAROUND | HTML_NLINSIDE)
 #define HTML_INDENT      (1 << 6)  #define HTML_INDENT      (1 << 7)  /* Indent content by two spaces. */
 #define HTML_NOINDENT    (1 << 7)  #define HTML_NOINDENT    (1 << 8)  /* Exception: never indent content. */
 };  };
   
 static  const struct htmldata htmltags[TAG_MAX] = {  static  const struct htmldata htmltags[TAG_MAX] = {
         {"html",        HTML_NLALL},          {"html",        HTML_NLALL},
         {"head",        HTML_NLALL | HTML_INDENT},          {"head",        HTML_NLALL | HTML_INDENT},
         {"body",        HTML_NLALL},          {"meta",        HTML_NOSTACK | HTML_NLALL},
         {"meta",        HTML_NOSTACK | HTML_AUTOCLOSE | HTML_NLALL},          {"link",        HTML_NOSTACK | HTML_NLALL},
           {"style",       HTML_NLALL | HTML_INDENT},
         {"title",       HTML_NLAROUND},          {"title",       HTML_NLAROUND},
           {"body",        HTML_NLALL},
         {"div",         HTML_NLAROUND},          {"div",         HTML_NLAROUND},
         {"div",         0},          {"div",         0},
         {"section",     HTML_NLALL},          {"section",     HTML_NLALL},
         {"h1",          HTML_NLAROUND},  
         {"h2",          HTML_NLAROUND},  
         {"span",        0},  
         {"link",        HTML_NOSTACK | HTML_AUTOCLOSE | HTML_NLALL},  
         {"br",          HTML_NOSTACK | HTML_AUTOCLOSE | HTML_NLALL},  
         {"a",           0},  
         {"table",       HTML_NLALL | HTML_INDENT},          {"table",       HTML_NLALL | HTML_INDENT},
         {"tr",          HTML_NLALL | HTML_INDENT},          {"tr",          HTML_NLALL | HTML_INDENT},
         {"td",          HTML_NLAROUND},          {"td",          HTML_NLAROUND},
Line 79  static const struct htmldata htmltags[TAG_MAX] = {
Line 76  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},          {"h1",          HTML_TOPHRASE | HTML_NLAROUND},
         {"pre",         HTML_NLALL | HTML_NOINDENT},          {"h2",          HTML_TOPHRASE | HTML_NLAROUND},
         {"var",         0},          {"p",           HTML_TOPHRASE | HTML_NLAROUND | HTML_INDENT},
         {"cite",        0},          {"pre",         HTML_TOPHRASE | HTML_NLALL | HTML_NOINDENT},
         {"b",           0},          {"a",           HTML_INPHRASE | HTML_TOPHRASE},
         {"i",           0},          {"b",           HTML_INPHRASE | HTML_TOPHRASE},
         {"code",        0},          {"cite",        HTML_INPHRASE | HTML_TOPHRASE},
         {"small",       0},          {"code",        HTML_INPHRASE | HTML_TOPHRASE},
         {"style",       HTML_NLALL | HTML_INDENT},          {"i",           HTML_INPHRASE | HTML_TOPHRASE},
         {"math",        HTML_NLALL | HTML_INDENT},          {"small",       HTML_INPHRASE | HTML_TOPHRASE},
           {"span",        HTML_INPHRASE | HTML_TOPHRASE},
           {"var",         HTML_INPHRASE | HTML_TOPHRASE},
           {"br",          HTML_INPHRASE | HTML_NOSTACK | HTML_NLALL},
           {"math",        HTML_INPHRASE | HTML_NLALL | HTML_INDENT},
         {"mrow",        0},          {"mrow",        0},
         {"mi",          0},          {"mi",          0},
         {"mn",          0},          {"mn",          0},
Line 584  print_otag(struct html *h, enum htmltag tag, const cha
Line 585  print_otag(struct html *h, enum htmltag tag, const cha
   
         tflags = htmltags[tag].flags;          tflags = htmltags[tag].flags;
   
           /* Flow content is not allowed in phrasing context. */
   
           if ((tflags & HTML_INPHRASE) == 0) {
                   for (t = h->tag; t != NULL; t = t->next) {
                           if (t->closed)
                                   continue;
                           assert((htmltags[t->tag].flags & HTML_TOPHRASE) == 0);
                           break;
                   }
           }
   
         /* Push this tag onto the stack of open scopes. */          /* Push this tag onto the stack of open scopes. */
   
         if ((tflags & HTML_NOSTACK) == 0) {          if ((tflags & HTML_NOSTACK) == 0) {
Line 701  print_otag(struct html *h, enum htmltag tag, const cha
Line 713  print_otag(struct html *h, enum htmltag tag, const cha
   
         /* Accommodate for "well-formed" singleton escaping. */          /* Accommodate for "well-formed" singleton escaping. */
   
         if (HTML_AUTOCLOSE & htmltags[tag].flags)          if (htmltags[tag].flags & HTML_NOSTACK)
                 print_byte(h, '/');                  print_byte(h, '/');
   
         print_byte(h, '>');          print_byte(h, '>');

Legend:
Removed from v.1.256  
changed lines
  Added in v.1.257

CVSweb