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

Diff for /mandoc/mdoc_html.c between version 1.226 and 1.227

version 1.226, 2015/03/03 21:11:34 version 1.227, 2015/04/02 21:36:50
Line 7 
Line 7 
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies.   * copyright notice and this permission notice appear in all copies.
  *   *
  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES
  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
Line 27 
Line 27 
 #include <unistd.h>  #include <unistd.h>
   
 #include "mandoc_aux.h"  #include "mandoc_aux.h"
   #include "roff.h"
 #include "mdoc.h"  #include "mdoc.h"
 #include "out.h"  #include "out.h"
 #include "html.h"  #include "html.h"
Line 390  print_mdoc_node(MDOC_ARGS)
Line 391  print_mdoc_node(MDOC_ARGS)
         n->flags &= ~MDOC_ENDED;          n->flags &= ~MDOC_ENDED;
   
         switch (n->type) {          switch (n->type) {
         case MDOC_ROOT:          case ROFFT_ROOT:
                 child = mdoc_root_pre(meta, n, h);                  child = mdoc_root_pre(meta, n, h);
                 break;                  break;
         case MDOC_TEXT:          case ROFFT_TEXT:
                 /* No tables in this mode... */                  /* No tables in this mode... */
                 assert(NULL == h->tblt);                  assert(NULL == h->tblt);
   
Line 410  print_mdoc_node(MDOC_ARGS)
Line 411  print_mdoc_node(MDOC_ARGS)
                 if (MDOC_DELIMO & n->flags)                  if (MDOC_DELIMO & n->flags)
                         h->flags |= HTML_NOSPACE;                          h->flags |= HTML_NOSPACE;
                 return;                  return;
         case MDOC_EQN:          case ROFFT_EQN:
                 if (n->flags & MDOC_LINE)                  if (n->flags & MDOC_LINE)
                         putchar('\n');                          putchar('\n');
                 print_eqn(h, n->eqn);                  print_eqn(h, n->eqn);
                 break;                  break;
         case MDOC_TBL:          case ROFFT_TBL:
                 /*                  /*
                  * This will take care of initialising all of the table                   * This will take care of initialising all of the table
                  * state data for the first table, then tearing it down                   * state data for the first table, then tearing it down
Line 450  print_mdoc_node(MDOC_ARGS)
Line 451  print_mdoc_node(MDOC_ARGS)
         print_stagq(h, t);          print_stagq(h, t);
   
         switch (n->type) {          switch (n->type) {
         case MDOC_ROOT:          case ROFFT_ROOT:
                 mdoc_root_post(meta, n, h);                  mdoc_root_post(meta, n, h);
                 break;                  break;
         case MDOC_EQN:          case ROFFT_EQN:
                 break;                  break;
         default:          default:
                 if ( ! mdocs[n->tok].post || n->flags & MDOC_ENDED)                  if ( ! mdocs[n->tok].post || n->flags & MDOC_ENDED)
Line 543  mdoc_sh_pre(MDOC_ARGS)
Line 544  mdoc_sh_pre(MDOC_ARGS)
         struct htmlpair  tag;          struct htmlpair  tag;
   
         switch (n->type) {          switch (n->type) {
         case MDOC_BLOCK:          case ROFFT_BLOCK:
                 PAIR_CLASS_INIT(&tag, "section");                  PAIR_CLASS_INIT(&tag, "section");
                 print_otag(h, TAG_DIV, 1, &tag);                  print_otag(h, TAG_DIV, 1, &tag);
                 return(1);                  return(1);
         case MDOC_BODY:          case ROFFT_BODY:
                 if (n->sec == SEC_AUTHORS)                  if (n->sec == SEC_AUTHORS)
                         h->flags &= ~(HTML_SPLIT|HTML_NOSPLIT);                          h->flags &= ~(HTML_SPLIT|HTML_NOSPLIT);
                 return(1);                  return(1);
Line 558  mdoc_sh_pre(MDOC_ARGS)
Line 559  mdoc_sh_pre(MDOC_ARGS)
         bufinit(h);          bufinit(h);
         bufcat(h, "x");          bufcat(h, "x");
   
         for (n = n->child; n && MDOC_TEXT == n->type; ) {          for (n = n->child; n != NULL && n->type == ROFFT_TEXT; ) {
                 bufcat_id(h, n->string);                  bufcat_id(h, n->string);
                 if (NULL != (n = n->next))                  if (NULL != (n = n->next))
                         bufcat_id(h, " ");                          bufcat_id(h, " ");
Line 578  mdoc_ss_pre(MDOC_ARGS)
Line 579  mdoc_ss_pre(MDOC_ARGS)
 {  {
         struct htmlpair  tag;          struct htmlpair  tag;
   
         if (MDOC_BLOCK == n->type) {          if (n->type == ROFFT_BLOCK) {
                 PAIR_CLASS_INIT(&tag, "subsection");                  PAIR_CLASS_INIT(&tag, "subsection");
                 print_otag(h, TAG_DIV, 1, &tag);                  print_otag(h, TAG_DIV, 1, &tag);
                 return(1);                  return(1);
         } else if (MDOC_BODY == n->type)          } else if (n->type == ROFFT_BODY)
                 return(1);                  return(1);
   
         bufinit(h);          bufinit(h);
         bufcat(h, "x");          bufcat(h, "x");
   
         for (n = n->child; n && MDOC_TEXT == n->type; ) {          for (n = n->child; n != NULL && n->type == ROFFT_TEXT; ) {
                 bufcat_id(h, n->string);                  bufcat_id(h, n->string);
                 if (NULL != (n = n->next))                  if (NULL != (n = n->next))
                         bufcat_id(h, " ");                          bufcat_id(h, " ");
Line 620  mdoc_fl_pre(MDOC_ARGS)
Line 621  mdoc_fl_pre(MDOC_ARGS)
   
         if ( ! (n->nchild == 0 &&          if ( ! (n->nchild == 0 &&
             (n->next == NULL ||              (n->next == NULL ||
              n->next->type == MDOC_TEXT ||               n->next->type == ROFFT_TEXT ||
              n->next->flags & MDOC_LINE)))               n->next->flags & MDOC_LINE)))
                 h->flags |= HTML_NOSPACE;                  h->flags |= HTML_NOSPACE;
   
Line 632  mdoc_nd_pre(MDOC_ARGS)
Line 633  mdoc_nd_pre(MDOC_ARGS)
 {  {
         struct htmlpair  tag;          struct htmlpair  tag;
   
         if (MDOC_BODY != n->type)          if (n->type != ROFFT_BODY)
                 return(1);                  return(1);
   
         /* XXX: this tag in theory can contain block elements. */          /* XXX: this tag in theory can contain block elements. */
Line 651  mdoc_nm_pre(MDOC_ARGS)
Line 652  mdoc_nm_pre(MDOC_ARGS)
         int              len;          int              len;
   
         switch (n->type) {          switch (n->type) {
         case MDOC_ELEM:          case ROFFT_ELEM:
                 synopsis_pre(h, n);                  synopsis_pre(h, n);
                 PAIR_CLASS_INIT(&tag, "name");                  PAIR_CLASS_INIT(&tag, "name");
                 print_otag(h, TAG_B, 1, &tag);                  print_otag(h, TAG_B, 1, &tag);
                 if (NULL == n->child && meta->name)                  if (NULL == n->child && meta->name)
                         print_text(h, meta->name);                          print_text(h, meta->name);
                 return(1);                  return(1);
         case MDOC_HEAD:          case ROFFT_HEAD:
                 print_otag(h, TAG_TD, 0, NULL);                  print_otag(h, TAG_TD, 0, NULL);
                 if (NULL == n->child && meta->name)                  if (NULL == n->child && meta->name)
                         print_text(h, meta->name);                          print_text(h, meta->name);
                 return(1);                  return(1);
         case MDOC_BODY:          case ROFFT_BODY:
                 print_otag(h, TAG_TD, 0, NULL);                  print_otag(h, TAG_TD, 0, NULL);
                 return(1);                  return(1);
         default:          default:
Line 675  mdoc_nm_pre(MDOC_ARGS)
Line 676  mdoc_nm_pre(MDOC_ARGS)
         print_otag(h, TAG_TABLE, 1, &tag);          print_otag(h, TAG_TABLE, 1, &tag);
   
         for (len = 0, n = n->child; n; n = n->next)          for (len = 0, n = n->child; n; n = n->next)
                 if (MDOC_TEXT == n->type)                  if (n->type == ROFFT_TEXT)
                         len += html_strlen(n->string);                          len += html_strlen(n->string);
   
         if (0 == len && meta->name)          if (0 == len && meta->name)
Line 836  mdoc_it_pre(MDOC_ARGS)
Line 837  mdoc_it_pre(MDOC_ARGS)
   
         bufinit(h);          bufinit(h);
   
         if (MDOC_HEAD == n->type) {          if (n->type == ROFFT_HEAD) {
                 switch (type) {                  switch (type) {
                 case LIST_bullet:                  case LIST_bullet:
                         /* FALLTHROUGH */                          /* FALLTHROUGH */
Line 871  mdoc_it_pre(MDOC_ARGS)
Line 872  mdoc_it_pre(MDOC_ARGS)
                 default:                  default:
                         break;                          break;
                 }                  }
         } else if (MDOC_BODY == n->type) {          } else if (n->type == ROFFT_BODY) {
                 switch (type) {                  switch (type) {
                 case LIST_bullet:                  case LIST_bullet:
                         /* FALLTHROUGH */                          /* FALLTHROUGH */
Line 935  mdoc_bl_pre(MDOC_ARGS)
Line 936  mdoc_bl_pre(MDOC_ARGS)
         struct roffsu    su;          struct roffsu    su;
         char             buf[BUFSIZ];          char             buf[BUFSIZ];
   
         if (MDOC_BODY == n->type) {          if (n->type == ROFFT_BODY) {
                 if (LIST_column == n->norm->Bl.type)                  if (LIST_column == n->norm->Bl.type)
                         print_otag(h, TAG_TBODY, 0, NULL);                          print_otag(h, TAG_TBODY, 0, NULL);
                 return(1);                  return(1);
         }          }
   
         if (MDOC_HEAD == n->type) {          if (n->type == ROFFT_HEAD) {
                 if (LIST_column != n->norm->Bl.type)                  if (LIST_column != n->norm->Bl.type)
                         return(0);                          return(0);
   
Line 1035  mdoc_ex_pre(MDOC_ARGS)
Line 1036  mdoc_ex_pre(MDOC_ARGS)
   
         nchild = n->nchild;          nchild = n->nchild;
         for (n = n->child; n; n = n->next) {          for (n = n->child; n; n = n->next) {
                 assert(MDOC_TEXT == n->type);                  assert(n->type == ROFFT_TEXT);
   
                 t = print_otag(h, TAG_B, 1, &tag);                  t = print_otag(h, TAG_B, 1, &tag);
                 print_text(h, n->string);                  print_text(h, n->string);
Line 1075  mdoc_d1_pre(MDOC_ARGS)
Line 1076  mdoc_d1_pre(MDOC_ARGS)
         struct htmlpair  tag[2];          struct htmlpair  tag[2];
         struct roffsu    su;          struct roffsu    su;
   
         if (MDOC_BLOCK != n->type)          if (n->type != ROFFT_BLOCK)
                 return(1);                  return(1);
   
         SCALE_VS_INIT(&su, 0);          SCALE_VS_INIT(&su, 0);
Line 1128  mdoc_bd_pre(MDOC_ARGS)
Line 1129  mdoc_bd_pre(MDOC_ARGS)
         struct mdoc_node        *nn;          struct mdoc_node        *nn;
         struct roffsu            su;          struct roffsu            su;
   
         if (MDOC_HEAD == n->type)          if (n->type == ROFFT_HEAD)
                 return(0);                  return(0);
   
         if (MDOC_BLOCK == n->type) {          if (n->type == ROFFT_BLOCK) {
                 comp = n->norm->Bd.comp;                  comp = n->norm->Bd.comp;
                 for (nn = n; nn && ! comp; nn = nn->parent) {                  for (nn = n; nn && ! comp; nn = nn->parent) {
                         if (MDOC_BLOCK != nn->type)                          if (nn->type != ROFFT_BLOCK)
                                 continue;                                  continue;
                         if (MDOC_Ss == nn->tok || MDOC_Sh == nn->tok)                          if (MDOC_Ss == nn->tok || MDOC_Sh == nn->tok)
                                 comp = 1;                                  comp = 1;
Line 1353  mdoc_fd_pre(MDOC_ARGS)
Line 1354  mdoc_fd_pre(MDOC_ARGS)
         if (NULL == (n = n->child))          if (NULL == (n = n->child))
                 return(0);                  return(0);
   
         assert(MDOC_TEXT == n->type);          assert(n->type == ROFFT_TEXT);
   
         if (strcmp(n->string, "#include")) {          if (strcmp(n->string, "#include")) {
                 PAIR_CLASS_INIT(&tag[0], "macro");                  PAIR_CLASS_INIT(&tag[0], "macro");
Line 1366  mdoc_fd_pre(MDOC_ARGS)
Line 1367  mdoc_fd_pre(MDOC_ARGS)
         print_text(h, n->string);          print_text(h, n->string);
   
         if (NULL != (n = n->next)) {          if (NULL != (n = n->next)) {
                 assert(MDOC_TEXT == n->type);                  assert(n->type == ROFFT_TEXT);
   
                 /*                  /*
                  * XXX This is broken and not easy to fix.                   * XXX This is broken and not easy to fix.
Line 1400  mdoc_fd_pre(MDOC_ARGS)
Line 1401  mdoc_fd_pre(MDOC_ARGS)
         }          }
   
         for ( ; n; n = n->next) {          for ( ; n; n = n->next) {
                 assert(MDOC_TEXT == n->type);                  assert(n->type == ROFFT_TEXT);
                 print_text(h, n->string);                  print_text(h, n->string);
         }          }
   
Line 1412  mdoc_vt_pre(MDOC_ARGS)
Line 1413  mdoc_vt_pre(MDOC_ARGS)
 {  {
         struct htmlpair  tag;          struct htmlpair  tag;
   
         if (MDOC_BLOCK == n->type) {          if (n->type == ROFFT_BLOCK) {
                 synopsis_pre(h, n);                  synopsis_pre(h, n);
                 return(1);                  return(1);
         } else if (MDOC_ELEM == n->type) {          } else if (n->type == ROFFT_ELEM) {
                 synopsis_pre(h, n);                  synopsis_pre(h, n);
         } else if (MDOC_HEAD == n->type)          } else if (n->type == ROFFT_HEAD)
                 return(0);                  return(0);
   
         PAIR_CLASS_INIT(&tag, "type");          PAIR_CLASS_INIT(&tag, "type");
Line 1596  mdoc_lk_pre(MDOC_ARGS)
Line 1597  mdoc_lk_pre(MDOC_ARGS)
         if (NULL == (n = n->child))          if (NULL == (n = n->child))
                 return(0);                  return(0);
   
         assert(MDOC_TEXT == n->type);          assert(n->type == ROFFT_TEXT);
   
         PAIR_CLASS_INIT(&tag[0], "link-ext");          PAIR_CLASS_INIT(&tag[0], "link-ext");
         PAIR_HREF_INIT(&tag[1], n->string);          PAIR_HREF_INIT(&tag[1], n->string);
Line 1621  mdoc_mt_pre(MDOC_ARGS)
Line 1622  mdoc_mt_pre(MDOC_ARGS)
         PAIR_CLASS_INIT(&tag[0], "link-mail");          PAIR_CLASS_INIT(&tag[0], "link-mail");
   
         for (n = n->child; n; n = n->next) {          for (n = n->child; n; n = n->next) {
                 assert(MDOC_TEXT == n->type);                  assert(n->type == ROFFT_TEXT);
   
                 bufinit(h);                  bufinit(h);
                 bufcat(h, "mailto:");                  bufcat(h, "mailto:");
Line 1642  mdoc_fo_pre(MDOC_ARGS)
Line 1643  mdoc_fo_pre(MDOC_ARGS)
         struct htmlpair  tag;          struct htmlpair  tag;
         struct tag      *t;          struct tag      *t;
   
         if (MDOC_BODY == n->type) {          if (n->type == ROFFT_BODY) {
                 h->flags |= HTML_NOSPACE;                  h->flags |= HTML_NOSPACE;
                 print_text(h, "(");                  print_text(h, "(");
                 h->flags |= HTML_NOSPACE;                  h->flags |= HTML_NOSPACE;
                 return(1);                  return(1);
         } else if (MDOC_BLOCK == n->type) {          } else if (n->type == ROFFT_BLOCK) {
                 synopsis_pre(h, n);                  synopsis_pre(h, n);
                 return(1);                  return(1);
         }          }
Line 1668  static void
Line 1669  static void
 mdoc_fo_post(MDOC_ARGS)  mdoc_fo_post(MDOC_ARGS)
 {  {
   
         if (MDOC_BODY != n->type)          if (n->type != ROFFT_BODY)
                 return;                  return;
         h->flags |= HTML_NOSPACE;          h->flags |= HTML_NOSPACE;
         print_text(h, ")");          print_text(h, ")");
Line 1702  mdoc_in_pre(MDOC_ARGS)
Line 1703  mdoc_in_pre(MDOC_ARGS)
         h->flags |= HTML_NOSPACE;          h->flags |= HTML_NOSPACE;
   
         if (NULL != (n = n->child)) {          if (NULL != (n = n->child)) {
                 assert(MDOC_TEXT == n->type);                  assert(n->type == ROFFT_TEXT);
   
                 PAIR_CLASS_INIT(&tag[0], "link-includes");                  PAIR_CLASS_INIT(&tag[0], "link-includes");
   
Line 1724  mdoc_in_pre(MDOC_ARGS)
Line 1725  mdoc_in_pre(MDOC_ARGS)
         print_text(h, ">");          print_text(h, ">");
   
         for ( ; n; n = n->next) {          for ( ; n; n = n->next) {
                 assert(MDOC_TEXT == n->type);                  assert(n->type == ROFFT_TEXT);
                 print_text(h, n->string);                  print_text(h, n->string);
         }          }
   
Line 1823  mdoc_bf_pre(MDOC_ARGS)
Line 1824  mdoc_bf_pre(MDOC_ARGS)
         struct htmlpair  tag[2];          struct htmlpair  tag[2];
         struct roffsu    su;          struct roffsu    su;
   
         if (MDOC_HEAD == n->type)          if (n->type == ROFFT_HEAD)
                 return(0);                  return(0);
         else if (MDOC_BODY != n->type)          else if (n->type != ROFFT_BODY)
                 return(1);                  return(1);
   
         if (FONT_Em == n->norm->Bf.font)          if (FONT_Em == n->norm->Bf.font)
Line 1882  mdoc_rs_pre(MDOC_ARGS)
Line 1883  mdoc_rs_pre(MDOC_ARGS)
 {  {
         struct htmlpair  tag;          struct htmlpair  tag;
   
         if (MDOC_BLOCK != n->type)          if (n->type != ROFFT_BLOCK)
                 return(1);                  return(1);
   
         if (n->prev && SEC_SEE_ALSO == n->sec)          if (n->prev && SEC_SEE_ALSO == n->sec)
Line 2048  mdoc_bk_pre(MDOC_ARGS)
Line 2049  mdoc_bk_pre(MDOC_ARGS)
 {  {
   
         switch (n->type) {          switch (n->type) {
         case MDOC_BLOCK:          case ROFFT_BLOCK:
                 break;                  break;
         case MDOC_HEAD:          case ROFFT_HEAD:
                 return(0);                  return(0);
         case MDOC_BODY:          case ROFFT_BODY:
                 if (n->parent->args || 0 == n->prev->nchild)                  if (n->parent->args || 0 == n->prev->nchild)
                         h->flags |= HTML_PREKEEP;                          h->flags |= HTML_PREKEEP;
                 break;                  break;
Line 2068  static void
Line 2069  static void
 mdoc_bk_post(MDOC_ARGS)  mdoc_bk_post(MDOC_ARGS)
 {  {
   
         if (MDOC_BODY == n->type)          if (n->type == ROFFT_BODY)
                 h->flags &= ~(HTML_KEEP | HTML_PREKEEP);                  h->flags &= ~(HTML_KEEP | HTML_PREKEEP);
 }  }
   
Line 2077  mdoc_quote_pre(MDOC_ARGS)
Line 2078  mdoc_quote_pre(MDOC_ARGS)
 {  {
         struct htmlpair tag;          struct htmlpair tag;
   
         if (MDOC_BODY != n->type)          if (n->type != ROFFT_BODY)
                 return(1);                  return(1);
   
         switch (n->tok) {          switch (n->tok) {
Line 2149  static void
Line 2150  static void
 mdoc_quote_post(MDOC_ARGS)  mdoc_quote_post(MDOC_ARGS)
 {  {
   
         if (n->type != MDOC_BODY && n->type != MDOC_ELEM)          if (n->type != ROFFT_BODY && n->type != ROFFT_ELEM)
                 return;                  return;
   
         h->flags |= HTML_NOSPACE;          h->flags |= HTML_NOSPACE;
Line 2214  static int
Line 2215  static int
 mdoc_eo_pre(MDOC_ARGS)  mdoc_eo_pre(MDOC_ARGS)
 {  {
   
         if (n->type != MDOC_BODY)          if (n->type != ROFFT_BODY)
                 return(1);                  return(1);
   
         if (n->end == ENDBODY_NOT &&          if (n->end == ENDBODY_NOT &&
Line 2234  mdoc_eo_post(MDOC_ARGS)
Line 2235  mdoc_eo_post(MDOC_ARGS)
 {  {
         int      body, tail;          int      body, tail;
   
         if (n->type != MDOC_BODY)          if (n->type != ROFFT_BODY)
                 return;                  return;
   
         if (n->end != ENDBODY_NOT) {          if (n->end != ENDBODY_NOT) {

Legend:
Removed from v.1.226  
changed lines
  Added in v.1.227

CVSweb