[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.16 and 1.17

version 1.16, 2009/10/03 15:08:09 version 1.17, 2009/10/03 15:26:26
Line 56  static int    a2list(const struct mdoc_node *);
Line 56  static int    a2list(const struct mdoc_node *);
   
 static  void              buffmt_man(struct html *,  static  void              buffmt_man(struct html *,
                                 const char *, const char *);                                  const char *, const char *);
   static  void              buffmt_includes(struct html *, const char *);
 static  void              buffmt(struct html *, const char *, ...);  static  void              buffmt(struct html *, const char *, ...);
 static  void              bufcat(struct html *, const char *);  static  void              bufcat(struct html *, const char *);
 static  void              bufncat(struct html *, const char *, size_t);  static  void              bufncat(struct html *, const char *, size_t);
Line 326  bufncat(struct html *h, const char *p, size_t sz)
Line 327  bufncat(struct html *h, const char *p, size_t sz)
   
   
 static void  static void
   buffmt_includes(struct html *h, const char *name)
   {
           const char      *p, *pp;
   
           pp = h->base_includes;
           while ((p = strchr(pp, '%'))) {
                   bufncat(h, pp, p - pp);
                   switch (*(p + 1)) {
                   case('I'):
                           bufcat(h, name);
                           break;
                   default:
                           bufncat(h, p, 2);
                           break;
                   }
                   pp = p + 2;
           }
           if (pp)
                   bufcat(h, pp);
   }
   
   
   static void
 buffmt_man(struct html *h,  buffmt_man(struct html *h,
                 const char *name, const char *sec)                  const char *name, const char *sec)
 {  {
         const char      *p, *pp;          const char      *p, *pp;
   
         pp = h->base_man;          pp = h->base_man;
   
         /* FIXME: URL-encode contents. */  
   
         while ((p = strchr(pp, '%'))) {          while ((p = strchr(pp, '%'))) {
                 bufncat(h, pp, p - pp);                  bufncat(h, pp, p - pp);
                 switch (*(p + 1)) {                  switch (*(p + 1)) {
Line 829  mdoc_xr_pre(MDOC_ARGS)
Line 850  mdoc_xr_pre(MDOC_ARGS)
 {  {
         struct htmlpair          tag[2];          struct htmlpair          tag[2];
         const struct mdoc_node  *nn;          const struct mdoc_node  *nn;
           int                      i;
   
         buffmt_man(h, n->child->string,          i = 0;
                         n->child->next ?          tag[i].key = ATTR_CLASS;
                         n->child->next->string : NULL);          tag[i++].val = "link-man";
   
         tag[0].key = ATTR_CLASS;          if (h->base_man) {
         tag[0].val = "link-man";                  buffmt_man(h, n->child->string, n->child->next ?
         tag[1].key = ATTR_HREF;                                  n->child->next->string : NULL);
         tag[1].val = h->buf;                  tag[i].key = ATTR_HREF;
         print_otag(h, TAG_A, 2, tag);                  tag[i++].val = h->buf;
           }
   
           print_otag(h, TAG_A, i, tag);
   
         nn = n->child;          nn = n->child;
         print_text(h, nn->string);          print_text(h, nn->string);
   
Line 1350  mdoc_d1_pre(MDOC_ARGS)
Line 1375  mdoc_d1_pre(MDOC_ARGS)
 static int  static int
 mdoc_sx_pre(MDOC_ARGS)  mdoc_sx_pre(MDOC_ARGS)
 {  {
         struct htmlpair          tag[2];          struct htmlpair          tag[3];
         const struct mdoc_node  *nn;          const struct mdoc_node  *nn;
   
         bufcat(h, "#");          bufcat(h, "#");
Line 1364  mdoc_sx_pre(MDOC_ARGS)
Line 1389  mdoc_sx_pre(MDOC_ARGS)
         tag[0].val = h->buf;          tag[0].val = h->buf;
         tag[1].key = ATTR_CLASS;          tag[1].key = ATTR_CLASS;
         tag[1].val = "link-sec";          tag[1].val = "link-sec";
           tag[2].key = ATTR_TARGET;
           tag[2].val = "_self";
   
         print_otag(h, TAG_A, 2, tag);          print_otag(h, TAG_A, 3, tag);
         return(1);          return(1);
 }  }
   
Line 1896  static int
Line 1923  static int
 mdoc_in_pre(MDOC_ARGS)  mdoc_in_pre(MDOC_ARGS)
 {  {
         const struct mdoc_node  *nn;          const struct mdoc_node  *nn;
         struct htmlpair          tag;          struct htmlpair          tag[2];
           struct tag              *t;
           int                      i;
   
         if (SEC_SYNOPSIS == n->sec) {          if (SEC_SYNOPSIS == n->sec) {
                 if (n->next && MDOC_In != n->next->tok) {                  if (n->next && MDOC_In != n->next->tok) {
                         tag.key = ATTR_STYLE;                          tag[0].key = ATTR_STYLE;
                         tag.val = "margin-bottom: 1em;";                          tag[0].val = "margin-bottom: 1em;";
                         print_otag(h, TAG_DIV, 1, &tag);                          print_otag(h, TAG_DIV, 1, tag);
                 } else                  } else
                         print_otag(h, TAG_DIV, 0, NULL);                          print_otag(h, TAG_DIV, 0, NULL);
         }          }
   
         tag.key = ATTR_CLASS;          tag[0].key = ATTR_CLASS;
         tag.val = "includes";          tag[0].val = "includes";
   
         print_otag(h, TAG_SPAN, 1, &tag);          print_otag(h, TAG_SPAN, 1, tag);
   
         if (SEC_SYNOPSIS == n->sec)          if (SEC_SYNOPSIS == n->sec)
                 print_text(h, "#include");                  print_text(h, "#include");
Line 1920  mdoc_in_pre(MDOC_ARGS)
Line 1949  mdoc_in_pre(MDOC_ARGS)
   
         /* XXX -- see warning in termp_in_post(). */          /* XXX -- see warning in termp_in_post(). */
   
         for (nn = n->child; nn; nn = nn->next)          for (nn = n->child; nn; nn = nn->next) {
                   assert(MDOC_TEXT == nn->type);
                   i = 0;
                   tag[i].key = ATTR_CLASS;
                   tag[i++].val = "link-includes";
                   if (h->base_includes) {
                           buffmt_includes(h, nn->string);
                           tag[i].key = ATTR_HREF;
                           tag[i++].val = h->buf;
                   }
                   t = print_otag(h, TAG_A, i, tag);
                 print_mdoc_node(m, nn, h);                  print_mdoc_node(m, nn, h);
                   print_tagq(h, t);
           }
   
         h->flags |= HTML_NOSPACE;          h->flags |= HTML_NOSPACE;
         print_text(h, ">");          print_text(h, ">");

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17

CVSweb