[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.18 and 1.22

version 1.18, 2009/10/03 16:36:06 version 1.22, 2009/10/04 15:24:54
Line 35 
Line 35 
 #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, \
                           struct html *h                            struct html *h
 #define MAN_ARGS          const struct man_meta *m, \  
                           const struct man_node *n, \  
                           struct html *h  
   
 struct  htmlmdoc {  struct  htmlmdoc {
         int             (*pre)(MDOC_ARGS);          int             (*pre)(MDOC_ARGS);
Line 385  print_mdoc(MDOC_ARGS)
Line 382  print_mdoc(MDOC_ARGS)
 static void  static void
 print_mdoc_head(MDOC_ARGS)  print_mdoc_head(MDOC_ARGS)
 {  {
         char            b[BUFSIZ];  
   
         print_gen_head(h);          print_gen_head(h);
           bufinit(h);
           buffmt(h, "%s(%d)", m->title, m->msec);
   
         (void)snprintf(b, BUFSIZ - 1,  
                         "%s(%d)", m->title, m->msec);  
   
         if (m->arch) {          if (m->arch) {
                 (void)strlcat(b, " (", BUFSIZ);                  bufcat(h, " (");
                 (void)strlcat(b, m->arch, BUFSIZ);                  bufcat(h, m->arch);
                 (void)strlcat(b, ")", BUFSIZ);                  bufcat(h, ")");
         }          }
   
         print_otag(h, TAG_TITLE, 0, NULL);          print_otag(h, TAG_TITLE, 0, NULL);
         print_text(h, b);          print_text(h, h->buf);
 }  }
   
   
Line 547  mdoc_sh_pre(MDOC_ARGS)
Line 542  mdoc_sh_pre(MDOC_ARGS)
 {  {
         struct htmlpair          tag[2];          struct htmlpair          tag[2];
         const struct mdoc_node  *nn;          const struct mdoc_node  *nn;
           char                     link[BUFSIZ];
   
         if (MDOC_HEAD == n->type) {          if (MDOC_BODY == n->type) {
                   buffmt(h, "margin-left: %dem;", INDENT);
   
                 tag[0].key = ATTR_CLASS;                  tag[0].key = ATTR_CLASS;
                 tag[0].val = "sec-head";                  tag[0].val = "sec-body";
                 print_otag(h, TAG_DIV, 1, tag);                  tag[1].key = ATTR_STYLE;
                 print_otag(h, TAG_SPAN, 1, tag);                  tag[1].val = h->buf;
   
                 for (nn = n->child; nn; nn = nn->next) {                  print_otag(h, TAG_DIV, 2, tag);
                         bufcat(h, nn->string);  
                         if (nn->next)  
                                 bufncat(h, " ", 1);  
                 }  
                 tag[0].key = ATTR_NAME;  
                 tag[0].val = h->buf;  
                 print_otag(h, TAG_A, 1, tag);  
                 return(1);                  return(1);
         } else if (MDOC_BLOCK == n->type) {          } else if (MDOC_BLOCK == n->type) {
                 tag[0].key = ATTR_CLASS;                  tag[0].key = ATTR_CLASS;
Line 578  mdoc_sh_pre(MDOC_ARGS)
Line 569  mdoc_sh_pre(MDOC_ARGS)
   
                 tag[1].key = ATTR_STYLE;                  tag[1].key = ATTR_STYLE;
                 tag[1].val = h->buf;                  tag[1].val = h->buf;
   
                 print_otag(h, TAG_DIV, 2, tag);                  print_otag(h, TAG_DIV, 2, tag);
                 return(1);                  return(1);
         }          }
   
         buffmt(h, "margin-left: %dem;", INDENT);          link[0] = 0;
           for (nn = n->child; nn; nn = nn->next) {
                   (void)strlcat(link, nn->string, BUFSIZ);
                   if (nn->next)
                           (void)strlcat(link, "_", BUFSIZ);
           }
   
           /* FIXME: make sure no duplicates! */
   
         tag[0].key = ATTR_CLASS;          tag[0].key = ATTR_CLASS;
         tag[0].val = "sec-body";          tag[0].val = "sec-head";
         tag[1].key = ATTR_STYLE;          tag[1].key = ATTR_ID;
         tag[1].val = h->buf;          tag[1].val = link;
   
         print_otag(h, TAG_DIV, 2, tag);          print_otag(h, TAG_DIV, 2, tag);
         return(1);          return(1);
Line 599  mdoc_sh_pre(MDOC_ARGS)
Line 596  mdoc_sh_pre(MDOC_ARGS)
 static int  static int
 mdoc_ss_pre(MDOC_ARGS)  mdoc_ss_pre(MDOC_ARGS)
 {  {
         struct htmlpair          tag[2];          struct htmlpair          tag[3];
         int                      i;          int                      i;
         const struct mdoc_node  *nn;          const struct mdoc_node  *nn;
           char                     link[BUFSIZ];
   
         i = 0;          i = 0;
   
         if (MDOC_BODY == n->type) {          if (MDOC_BODY == n->type) {
                 tag[i].key = ATTR_CLASS;                  tag[i].key = ATTR_CLASS;
                 tag[i++].val = "ssec-body";                  tag[i++].val = "ssec-body";
   
                 if (n->parent->next && n->child) {                  if (n->parent->next && n->child) {
                         bufcat(h, "margin-bottom: 1em;");                          bufcat(h, "margin-bottom: 1em;");
                         tag[i].key = ATTR_STYLE;                          tag[i].key = ATTR_STYLE;
                         tag[i++].val = h->buf;                          tag[i++].val = h->buf;
                 }                  }
   
                 print_otag(h, TAG_DIV, i, tag);                  print_otag(h, TAG_DIV, i, tag);
                 return(1);                  return(1);
         } else if (MDOC_BLOCK == n->type) {          } else if (MDOC_BLOCK == n->type) {
                 tag[i].key = ATTR_CLASS;                  tag[i].key = ATTR_CLASS;
                 tag[i++].val = "ssec-block";                  tag[i++].val = "ssec-block";
   
                 if (n->prev) {                  if (n->prev) {
                         bufcat(h, "margin-top: 1em;");                          bufcat(h, "margin-top: 1em;");
                         tag[i].key = ATTR_STYLE;                          tag[i].key = ATTR_STYLE;
                         tag[i++].val = h->buf;                          tag[i++].val = h->buf;
                 }                  }
   
                 print_otag(h, TAG_DIV, i, tag);                  print_otag(h, TAG_DIV, i, tag);
                 return(1);                  return(1);
         }          }
   
           link[0] = 0;
           for (nn = n->child; nn; nn = nn->next) {
                   (void)strlcat(link, nn->string, BUFSIZ);
                   if (nn->next)
                           (void)strlcat(link, "_", BUFSIZ);
           }
   
         buffmt(h, "margin-left: -%dem;", INDENT - HALFINDENT);          buffmt(h, "margin-left: -%dem;", INDENT - HALFINDENT);
   
           /* FIXME: make sure no duplicates! */
   
         tag[0].key = ATTR_CLASS;          tag[0].key = ATTR_CLASS;
         tag[0].val = "ssec-head";          tag[0].val = "ssec-head";
         tag[1].key = ATTR_STYLE;          tag[1].key = ATTR_STYLE;
         tag[1].val = h->buf;          tag[1].val = h->buf;
           tag[2].key = ATTR_ID;
           tag[2].val = link;
   
         print_otag(h, TAG_DIV, 2, tag);          print_otag(h, TAG_DIV, 3, tag);
         print_otag(h, TAG_SPAN, 1, tag);  
   
         bufinit(h);  
         for (nn = n->child; nn; nn = nn->next) {  
                 bufcat(h, nn->string);  
                 if (nn->next)  
                         bufcat(h, " ");  
         }  
         tag[0].key = ATTR_NAME;  
         tag[0].val = h->buf;  
         print_otag(h, TAG_A, 1, tag);  
   
         return(1);          return(1);
 }  }
   
Line 1274  mdoc_sx_pre(MDOC_ARGS)
Line 1275  mdoc_sx_pre(MDOC_ARGS)
 {  {
         struct htmlpair          tag[2];          struct htmlpair          tag[2];
         const struct mdoc_node  *nn;          const struct mdoc_node  *nn;
           char                     link[BUFSIZ];
   
         bufcat(h, "#");          (void)strlcpy(link, "#", BUFSIZ);
         for (nn = n->child; nn; nn = nn->next) {          for (nn = n->child; nn; nn = nn->next) {
                 bufcat(h, nn->string);                  (void)strlcat(link, nn->string, BUFSIZ);
                 if (nn->next)                  if (nn->next)
                         bufcat(h, " ");                          (void)strlcat(link, "_", BUFSIZ);
         }          }
   
         tag[0].key = ATTR_HREF;          tag[0].key = ATTR_CLASS;
         tag[0].val = h->buf;          tag[0].val = "link-sec";
         tag[1].key = ATTR_CLASS;          tag[1].key = ATTR_HREF;
         tag[1].val = "link-sec";          tag[1].val = link;
   
         print_otag(h, TAG_A, 2, tag);          print_otag(h, TAG_A, 2, tag);
         return(1);          return(1);
Line 1438  mdoc_an_pre(MDOC_ARGS)
Line 1440  mdoc_an_pre(MDOC_ARGS)
 {  {
         struct htmlpair tag;          struct htmlpair tag;
   
           /* TODO: -split and -nosplit (see termp_an_pre()). */
   
         tag.key = ATTR_CLASS;          tag.key = ATTR_CLASS;
         tag.val = "author";          tag.val = "author";
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, &tag);
Line 1616  mdoc_fn_pre(MDOC_ARGS)
Line 1620  mdoc_fn_pre(MDOC_ARGS)
         }          }
   
         /* Split apart into type and name. */          /* Split apart into type and name. */
   
         tag[0].key = ATTR_CLASS;  
         tag[0].val = "ftype";  
         t = print_otag(h, TAG_SPAN, 1, tag);  
   
         assert(n->child->string);          assert(n->child->string);
         sp = n->child->string;          sp = n->child->string;
         while (NULL != (ep = strchr(sp, ' '))) {  
                 sz = MIN((int)(ep - sp), BUFSIZ - 1);          if ((ep = strchr(sp, ' '))) {
                 (void)memcpy(nbuf, sp, (size_t)sz);                  tag[0].key = ATTR_CLASS;
                 nbuf[sz] = '\0';                  tag[0].val = "ftype";
                 print_text(h, nbuf);  
                 sp = ++ep;                  t = print_otag(h, TAG_SPAN, 1, tag);
   
                   while (ep) {
                           sz = MIN((int)(ep - sp), BUFSIZ - 1);
                           (void)memcpy(nbuf, sp, (size_t)sz);
                           nbuf[sz] = '\0';
                           print_text(h, nbuf);
                           sp = ++ep;
                           ep = strchr(sp, ' ');
                   }
                   print_tagq(h, t);
         }          }
   
         print_tagq(h, t);  
   
         tag[0].key = ATTR_CLASS;          tag[0].key = ATTR_CLASS;
         tag[0].val = "fname";          tag[0].val = "fname";
         t = print_otag(h, TAG_SPAN, 1, tag);          t = print_otag(h, TAG_SPAN, 1, tag);
Line 1691  mdoc_sp_pre(MDOC_ARGS)
Line 1698  mdoc_sp_pre(MDOC_ARGS)
                 break;                  break;
         }          }
   
         buffmt(h, "height: %dem", len);          buffmt(h, "height: %dem;", len);
         tag.key = ATTR_STYLE;          tag.key = ATTR_STYLE;
         tag.val = h->buf;          tag.val = h->buf;
         print_otag(h, TAG_DIV, 1, &tag);          print_otag(h, TAG_DIV, 1, &tag);

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.22

CVSweb