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

Diff for /mandoc/eqn_html.c between version 1.13 and 1.17

version 1.13, 2017/06/23 02:32:12 version 1.17, 2017/07/14 13:32:35
Line 34  eqn_box(struct html *p, const struct eqn_box *bp)
Line 34  eqn_box(struct html *p, const struct eqn_box *bp)
 {  {
         struct tag      *post, *row, *cell, *t;          struct tag      *post, *row, *cell, *t;
         const struct eqn_box *child, *parent;          const struct eqn_box *child, *parent;
         const unsigned char *cp;          const char      *cp;
         size_t           i, j, rows;          size_t           i, j, rows;
         enum htmltag     tag;          enum htmltag     tag;
         enum eqn_fontt   font;          enum eqn_fontt   font;
Line 51  eqn_box(struct html *p, const struct eqn_box *bp)
Line 51  eqn_box(struct html *p, const struct eqn_box *bp)
         if (EQN_MATRIX == bp->type) {          if (EQN_MATRIX == bp->type) {
                 if (NULL == bp->first)                  if (NULL == bp->first)
                         goto out;                          goto out;
                 if (EQN_LIST != bp->first->type) {                  if (bp->first->type != EQN_LIST ||
                       bp->first->expectargs == 1) {
                         eqn_box(p, bp->first);                          eqn_box(p, bp->first);
                         goto out;                          goto out;
                 }                  }
Line 131  eqn_box(struct html *p, const struct eqn_box *bp)
Line 132  eqn_box(struct html *p, const struct eqn_box *bp)
   
         if (EQN_PILE == bp->type) {          if (EQN_PILE == bp->type) {
                 assert(NULL == post);                  assert(NULL == post);
                 if (bp->first != NULL && bp->first->type == EQN_LIST)                  if (bp->first != NULL &&
                       bp->first->type == EQN_LIST &&
                       bp->first->expectargs > 1)
                         post = print_otag(p, TAG_MTABLE, "");                          post = print_otag(p, TAG_MTABLE, "");
         } else if (bp->type == EQN_LIST &&          } else if (bp->type == EQN_LIST && bp->expectargs > 1 &&
             bp->parent && bp->parent->type == EQN_PILE) {              bp->parent && bp->parent->type == EQN_PILE) {
                 assert(NULL == post);                  assert(NULL == post);
                 post = print_otag(p, TAG_MTR, "");                  post = print_otag(p, TAG_MTR, "");
Line 143  eqn_box(struct html *p, const struct eqn_box *bp)
Line 146  eqn_box(struct html *p, const struct eqn_box *bp)
         if (bp->text != NULL) {          if (bp->text != NULL) {
                 assert(post == NULL);                  assert(post == NULL);
                 tag = TAG_MI;                  tag = TAG_MI;
                 cp = (unsigned char *)bp->text;                  cp = bp->text;
                 if (isdigit(cp[0]) || (cp[0] == '.' && isdigit(cp[1]))) {                  if (isdigit((unsigned char)cp[0]) ||
                       (cp[0] == '.' && isdigit((unsigned char)cp[1]))) {
                         tag = TAG_MN;                          tag = TAG_MN;
                         while (*++cp != '\0') {                          while (*++cp != '\0') {
                                 if (*cp != '.' && !isdigit(*cp)) {                                  if (*cp != '.' &&
                                       isdigit((unsigned char)*cp) == 0) {
                                         tag = TAG_MI;                                          tag = TAG_MI;
                                         break;                                          break;
                                 }                                  }
                         }                          }
                 } else if (*cp != '\0' && isalpha(*cp) == 0) {                  } else if (*cp != '\0' && isalpha((unsigned char)*cp) == 0) {
                         tag = TAG_MO;                          tag = TAG_MO;
                         while (*++cp != '\0') {                          while (*cp != '\0') {
                                 if (isalnum(*cp)) {                                  if (cp[0] == '\\' && cp[1] != '\0') {
                                           cp++;
                                           mandoc_escape(&cp, NULL, NULL);
                                   } else if (isalnum((unsigned char)*cp)) {
                                         tag = TAG_MI;                                          tag = TAG_MI;
                                         break;                                          break;
                                 }                                  } else
                                           cp++;
                         }                          }
                 }                  }
                 font = bp->font;                  font = bp->font;
Line 218  out:
Line 227  out:
 }  }
   
 void  void
 print_eqn(struct html *p, const struct eqn *ep)  print_eqn(struct html *p, const struct eqn_box *bp)
 {  {
         struct tag      *t;          struct tag      *t;
   
           if (bp->first == NULL)
                   return;
   
         t = print_otag(p, TAG_MATH, "c", "eqn");          t = print_otag(p, TAG_MATH, "c", "eqn");
   
         p->flags |= HTML_NONOSPACE;          p->flags |= HTML_NONOSPACE;
         eqn_box(p, ep->root);          eqn_box(p, bp);
         p->flags &= ~HTML_NONOSPACE;          p->flags &= ~HTML_NONOSPACE;
   
         print_tagq(p, t);          print_tagq(p, t);

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

CVSweb