[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.173 and 1.182

version 1.173, 2011/07/21 11:34:53 version 1.182, 2011/11/03 20:37:00
Line 34 
Line 34 
 #include "main.h"  #include "main.h"
   
 #define INDENT           5  #define INDENT           5
 #define HALFINDENT       3  
   
 #define MDOC_ARGS         const struct mdoc_meta *m, \  #define MDOC_ARGS         const struct mdoc_meta *m, \
                           const struct mdoc_node *n, \                            const struct mdoc_node *n, \
Line 190  static const struct htmlmdoc mdocs[MDOC_MAX] = {
Line 189  static const struct htmlmdoc mdocs[MDOC_MAX] = {
         {NULL, NULL}, /* Ec */ /* FIXME: no space */          {NULL, NULL}, /* Ec */ /* FIXME: no space */
         {NULL, NULL}, /* Ef */          {NULL, NULL}, /* Ef */
         {mdoc_em_pre, NULL}, /* Em */          {mdoc_em_pre, NULL}, /* Em */
         {NULL, NULL}, /* Eo */          {mdoc_quote_pre, mdoc_quote_post}, /* Eo */
         {mdoc_xx_pre, NULL}, /* Fx */          {mdoc_xx_pre, NULL}, /* Fx */
         {mdoc_ms_pre, NULL}, /* Ms */          {mdoc_ms_pre, NULL}, /* Ms */
         {mdoc_igndelim_pre, NULL}, /* No */          {mdoc_igndelim_pre, NULL}, /* No */
Line 263  static const char * const lists[LIST_MAX] = {
Line 262  static const char * const lists[LIST_MAX] = {
 void  void
 html_mdoc(void *arg, const struct mdoc *m)  html_mdoc(void *arg, const struct mdoc *m)
 {  {
         struct html     *h;  
         struct tag      *t;  
   
         h = (struct html *)arg;          print_mdoc(mdoc_meta(m), mdoc_node(m), (struct html *)arg);
           putchar('\n');
         print_gen_decls(h);  
         t = print_otag(h, TAG_HTML, 0, NULL);  
         print_mdoc(mdoc_meta(m), mdoc_node(m), h);  
         print_tagq(h, t);  
   
         printf("\n");  
 }  }
   
   
Line 353  a2offs(const char *p, struct roffsu *su)
Line 344  a2offs(const char *p, struct roffsu *su)
                 SCALE_HS_INIT(su, INDENT);                  SCALE_HS_INIT(su, INDENT);
         else if (0 == strcmp(p, "indent-two"))          else if (0 == strcmp(p, "indent-two"))
                 SCALE_HS_INIT(su, INDENT * 2);                  SCALE_HS_INIT(su, INDENT * 2);
         else if ( ! a2roffsu(p, su, SCALE_MAX)) {          else if ( ! a2roffsu(p, su, SCALE_MAX))
                 su->unit = SCALE_BU;                  SCALE_HS_INIT(su, html_strlen(p));
                 su->scale = html_strlen(p);  
         }  
 }  }
   
   
 static void  static void
 print_mdoc(MDOC_ARGS)  print_mdoc(MDOC_ARGS)
 {  {
         struct tag      *t;          struct tag      *t, *tt;
           struct htmlpair  tag;
   
         t = print_otag(h, TAG_HEAD, 0, NULL);          PAIR_CLASS_INIT(&tag, "mandoc");
         print_mdoc_head(m, n, h);  
         print_tagq(h, t);  
   
         t = print_otag(h, TAG_BODY, 0, NULL);          if ( ! (HTML_FRAGMENT & h->oflags)) {
                   print_gen_decls(h);
                   t = print_otag(h, TAG_HTML, 0, NULL);
                   tt = print_otag(h, TAG_HEAD, 0, NULL);
                   print_mdoc_head(m, n, h);
                   print_tagq(h, tt);
                   print_otag(h, TAG_BODY, 0, NULL);
                   print_otag(h, TAG_DIV, 1, &tag);
           } else
                   t = print_otag(h, TAG_DIV, 1, &tag);
   
         print_mdoc_nodelist(m, n, h);          print_mdoc_nodelist(m, n, h);
         print_tagq(h, t);          print_tagq(h, t);
 }  }
Line 407  print_mdoc_node(MDOC_ARGS)
Line 405  print_mdoc_node(MDOC_ARGS)
 {  {
         int              child;          int              child;
         struct tag      *t;          struct tag      *t;
         struct htmlpair  tag;  
   
         child = 1;          child = 1;
         t = h->tags.head;          t = h->tags.head;
Line 434  print_mdoc_node(MDOC_ARGS)
Line 431  print_mdoc_node(MDOC_ARGS)
                         h->flags |= HTML_NOSPACE;                          h->flags |= HTML_NOSPACE;
                 return;                  return;
         case (MDOC_EQN):          case (MDOC_EQN):
                 PAIR_CLASS_INIT(&tag, "eqn");                  print_eqn(h, n->eqn);
                 /*print_otag(h, TAG_SPAN, 1, &tag);  
                 print_text(h, n->eqn->data);*/  
                 break;                  break;
         case (MDOC_TBL):          case (MDOC_TBL):
                 /*                  /*
Line 502  mdoc_root_post(MDOC_ARGS)
Line 497  mdoc_root_post(MDOC_ARGS)
   
         PAIR_SUMMARY_INIT(&tag[0], "Document Footer");          PAIR_SUMMARY_INIT(&tag[0], "Document Footer");
         PAIR_CLASS_INIT(&tag[1], "foot");          PAIR_CLASS_INIT(&tag[1], "foot");
         if (NULL == h->style) {          PAIR_INIT(&tag[2], ATTR_WIDTH, "100%");
                 PAIR_INIT(&tag[2], ATTR_WIDTH, "100%");          t = print_otag(h, TAG_TABLE, 3, tag);
                 t = print_otag(h, TAG_TABLE, 3, tag);          PAIR_INIT(&tag[0], ATTR_WIDTH, "50%");
                 PAIR_INIT(&tag[0], ATTR_WIDTH, "50%");          print_otag(h, TAG_COL, 1, tag);
                 print_otag(h, TAG_COL, 1, tag);          print_otag(h, TAG_COL, 1, tag);
                 print_otag(h, TAG_COL, 1, tag);  
         } else  
                 t = print_otag(h, TAG_TABLE, 2, tag);  
   
         t = print_otag(h, TAG_TBODY, 0, NULL);          print_otag(h, TAG_TBODY, 0, NULL);
   
         tt = print_otag(h, TAG_TR, 0, NULL);          tt = print_otag(h, TAG_TR, 0, NULL);
   
         PAIR_CLASS_INIT(&tag[0], "foot-date");          PAIR_CLASS_INIT(&tag[0], "foot-date");
         print_otag(h, TAG_TD, 1, tag);          print_otag(h, TAG_TD, 1, tag);
   
         print_text(h, m->date);          print_text(h, m->date);
         print_stagq(h, tt);          print_stagq(h, tt);
   
         PAIR_CLASS_INIT(&tag[0], "foot-os");          PAIR_CLASS_INIT(&tag[0], "foot-os");
         if (NULL == h->style) {          PAIR_INIT(&tag[1], ATTR_ALIGN, "right");
                 PAIR_INIT(&tag[1], ATTR_ALIGN, "right");          print_otag(h, TAG_TD, 2, tag);
                 print_otag(h, TAG_TD, 2, tag);  
         } else  
                 print_otag(h, TAG_TD, 1, tag);  
   
         print_text(h, m->os);          print_text(h, m->os);
         print_tagq(h, t);          print_tagq(h, t);
 }  }
Line 553  mdoc_root_pre(MDOC_ARGS)
Line 540  mdoc_root_pre(MDOC_ARGS)
   
         PAIR_SUMMARY_INIT(&tag[0], "Document Header");          PAIR_SUMMARY_INIT(&tag[0], "Document Header");
         PAIR_CLASS_INIT(&tag[1], "head");          PAIR_CLASS_INIT(&tag[1], "head");
         if (NULL == h->style) {          PAIR_INIT(&tag[2], ATTR_WIDTH, "100%");
                 PAIR_INIT(&tag[2], ATTR_WIDTH, "100%");          t = print_otag(h, TAG_TABLE, 3, tag);
                 t = print_otag(h, TAG_TABLE, 3, tag);          PAIR_INIT(&tag[0], ATTR_WIDTH, "30%");
                 PAIR_INIT(&tag[0], ATTR_WIDTH, "30%");          print_otag(h, TAG_COL, 1, tag);
                 print_otag(h, TAG_COL, 1, tag);          print_otag(h, TAG_COL, 1, tag);
                 print_otag(h, TAG_COL, 1, tag);          print_otag(h, TAG_COL, 1, tag);
                 print_otag(h, TAG_COL, 1, tag);  
         } else  
                 t = print_otag(h, TAG_TABLE, 2, tag);  
   
         print_otag(h, TAG_TBODY, 0, NULL);          print_otag(h, TAG_TBODY, 0, NULL);
   
Line 569  mdoc_root_pre(MDOC_ARGS)
Line 553  mdoc_root_pre(MDOC_ARGS)
   
         PAIR_CLASS_INIT(&tag[0], "head-ltitle");          PAIR_CLASS_INIT(&tag[0], "head-ltitle");
         print_otag(h, TAG_TD, 1, tag);          print_otag(h, TAG_TD, 1, tag);
   
         print_text(h, title);          print_text(h, title);
         print_stagq(h, tt);          print_stagq(h, tt);
   
         PAIR_CLASS_INIT(&tag[0], "head-vol");          PAIR_CLASS_INIT(&tag[0], "head-vol");
         if (NULL == h->style) {          PAIR_INIT(&tag[1], ATTR_ALIGN, "center");
                 PAIR_INIT(&tag[1], ATTR_ALIGN, "center");          print_otag(h, TAG_TD, 2, tag);
                 print_otag(h, TAG_TD, 2, tag);  
         } else  
                 print_otag(h, TAG_TD, 1, tag);  
   
         print_text(h, b);          print_text(h, b);
         print_stagq(h, tt);          print_stagq(h, tt);
   
         PAIR_CLASS_INIT(&tag[0], "head-rtitle");          PAIR_CLASS_INIT(&tag[0], "head-rtitle");
         if (NULL == h->style) {          PAIR_INIT(&tag[1], ATTR_ALIGN, "right");
                 PAIR_INIT(&tag[1], ATTR_ALIGN, "right");          print_otag(h, TAG_TD, 2, tag);
                 print_otag(h, TAG_TD, 2, tag);  
         } else  
                 print_otag(h, TAG_TD, 1, tag);  
   
         print_text(h, title);          print_text(h, title);
         print_tagq(h, t);          print_tagq(h, t);
         return(1);          return(1);
Line 611  mdoc_sh_pre(MDOC_ARGS)
Line 586  mdoc_sh_pre(MDOC_ARGS)
   
         bufinit(h);          bufinit(h);
         bufcat(h, "x");          bufcat(h, "x");
         for (n = n->child; n; n = n->next) {  
           for (n = n->child; n && MDOC_TEXT == n->type; ) {
                 bufcat_id(h, n->string);                  bufcat_id(h, n->string);
                 if (n->next)                  if (NULL != (n = n->next))
                         bufcat_id(h, " ");                          bufcat_id(h, " ");
         }          }
   
         PAIR_ID_INIT(&tag, h->buf);          if (NULL == n) {
         print_otag(h, TAG_H1, 1, &tag);                  PAIR_ID_INIT(&tag, h->buf);
                   print_otag(h, TAG_H1, 1, &tag);
           } else
                   print_otag(h, TAG_H1, 0, NULL);
   
         return(1);          return(1);
 }  }
   
   
 /* ARGSUSED */  /* ARGSUSED */
 static int  static int
 mdoc_ss_pre(MDOC_ARGS)  mdoc_ss_pre(MDOC_ARGS)
Line 638  mdoc_ss_pre(MDOC_ARGS)
Line 617  mdoc_ss_pre(MDOC_ARGS)
   
         bufinit(h);          bufinit(h);
         bufcat(h, "x");          bufcat(h, "x");
         for (n = n->child; n; n = n->next) {  
           for (n = n->child; n && MDOC_TEXT == n->type; ) {
                 bufcat_id(h, n->string);                  bufcat_id(h, n->string);
                 if (n->next)                  if (NULL != (n = n->next))
                         bufcat_id(h, " ");                          bufcat_id(h, " ");
         }          }
   
         PAIR_ID_INIT(&tag, h->buf);          if (NULL == n) {
         print_otag(h, TAG_H2, 1, &tag);                  PAIR_ID_INIT(&tag, h->buf);
                   print_otag(h, TAG_H2, 1, &tag);
           } else
                   print_otag(h, TAG_H2, 0, NULL);
   
         return(1);          return(1);
 }  }
   
Line 1174  mdoc_sx_pre(MDOC_ARGS)
Line 1158  mdoc_sx_pre(MDOC_ARGS)
   
         bufinit(h);          bufinit(h);
         bufcat(h, "#x");          bufcat(h, "#x");
         for (n = n->child; n; n = n->next) {  
           for (n = n->child; n; ) {
                 bufcat_id(h, n->string);                  bufcat_id(h, n->string);
                 if (n->next)                  if (NULL != (n = n->next))
                         bufcat_id(h, " ");                          bufcat_id(h, " ");
         }          }
   
Line 1987  mdoc_li_pre(MDOC_ARGS)
Line 1972  mdoc_li_pre(MDOC_ARGS)
         struct htmlpair tag;          struct htmlpair tag;
   
         PAIR_CLASS_INIT(&tag, "lit");          PAIR_CLASS_INIT(&tag, "lit");
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_CODE, 1, &tag);
         return(1);          return(1);
 }  }
   
Line 2200  mdoc_quote_pre(MDOC_ARGS)
Line 2185  mdoc_quote_pre(MDOC_ARGS)
                 PAIR_CLASS_INIT(&tag, "opt");                  PAIR_CLASS_INIT(&tag, "opt");
                 print_otag(h, TAG_SPAN, 1, &tag);                  print_otag(h, TAG_SPAN, 1, &tag);
                 break;                  break;
           case (MDOC_Eo):
                   break;
         case (MDOC_Do):          case (MDOC_Do):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Dq):          case (MDOC_Dq):
Line 2215  mdoc_quote_pre(MDOC_ARGS)
Line 2202  mdoc_quote_pre(MDOC_ARGS)
                 print_text(h, "(");                  print_text(h, "(");
                 break;                  break;
         case (MDOC_Ql):          case (MDOC_Ql):
                 /* FALLTHROUGH */                  print_text(h, "\\(oq");
                   h->flags |= HTML_NOSPACE;
                   PAIR_CLASS_INIT(&tag, "lit");
                   print_otag(h, TAG_CODE, 1, &tag);
                   break;
         case (MDOC_So):          case (MDOC_So):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Sq):          case (MDOC_Sq):
Line 2260  mdoc_quote_post(MDOC_ARGS)
Line 2251  mdoc_quote_post(MDOC_ARGS)
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Bq):          case (MDOC_Bq):
                 print_text(h, "\\(rB");                  print_text(h, "\\(rB");
                   break;
           case (MDOC_Eo):
                 break;                  break;
         case (MDOC_Qo):          case (MDOC_Qo):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */

Legend:
Removed from v.1.173  
changed lines
  Added in v.1.182

CVSweb