diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-07-23 22:57:13 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-07-23 22:57:13 +0000 |
commit | 7151bb8eeed729397435c0c693efc5546cfda123 (patch) | |
tree | e7cd99eb9b42eff87848d69b74a100ce56ee7332 | |
parent | d01207bfc948fdba1c7d2b8e9b46db9f3a91f3e9 (diff) | |
download | mandoc-7151bb8eeed729397435c0c693efc5546cfda123.tar.gz |
Flip on equation printing for -T[x]html.
-rw-r--r-- | Makefile | 7 | ||||
-rw-r--r-- | eqn_html.c | 89 | ||||
-rw-r--r-- | eqn_term.c | 8 | ||||
-rw-r--r-- | html.h | 1 | ||||
-rw-r--r-- | man_html.c | 5 | ||||
-rw-r--r-- | mdoc_html.c | 5 |
6 files changed, 101 insertions, 14 deletions
@@ -50,6 +50,7 @@ SRCS = Makefile \ config.h.pre \ eqn.7 \ eqn.c \ + eqn_html.c \ eqn_term.c \ example.style.css \ external.png \ @@ -192,11 +193,13 @@ $(LIBMDOC_OBJS) $(LIBMDOC_LNS): libmdoc.h $(LIBROFF_OBJS) $(LIBROFF_LNS): libroff.h $(LIBMANDOC_OBJS) $(LIBMANDOC_LNS): mandoc.h mdoc.h man.h libmandoc.h config.h -MANDOC_HTML_OBJS = html.o \ +MANDOC_HTML_OBJS = eqn_html.o \ + html.o \ man_html.o \ mdoc_html.o \ tbl_html.o -MANDOC_HTML_LNS = html.ln \ +MANDOC_HTML_LNS = eqn_html.ln \ + html.ln \ man_html.ln \ mdoc_html.ln \ tbl_html.ln diff --git a/eqn_html.c b/eqn_html.c new file mode 100644 index 00000000..eda5652a --- /dev/null +++ b/eqn_html.c @@ -0,0 +1,89 @@ +/* $Id$ */ +/* + * Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <assert.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "mandoc.h" +#include "out.h" +#include "html.h" + +static void eqn_box(struct html *, const struct eqn_box *); +static void eqn_box_post(struct html *, const struct eqn_box *); +static void eqn_box_pre(struct html *, const struct eqn_box *); +static void eqn_text(struct html *, const struct eqn_box *); + +void +print_eqn(struct html *p, const struct eqn *ep) +{ + struct htmlpair tag; + struct tag *t; + + PAIR_CLASS_INIT(&tag, "eqn"); + t = print_otag(p, TAG_SPAN, 1, &tag); + + p->flags |= HTML_NONOSPACE; + eqn_box(p, ep->root); + p->flags &= ~HTML_NONOSPACE; + + print_tagq(p, t); +} + +static void +eqn_box(struct html *p, const struct eqn_box *bp) +{ + + eqn_box_pre(p, bp); + eqn_text(p, bp); + + if (bp->first) + eqn_box(p, bp->first); + + eqn_box_post(p, bp); + + if (bp->next) + eqn_box(p, bp->next); +} + +static void +eqn_box_pre(struct html *p, const struct eqn_box *bp) +{ + + if (bp->left) + print_text(p, bp->left); +} + +static void +eqn_box_post(struct html *p, const struct eqn_box *bp) +{ + + if (bp->right) + print_text(p, bp->right); +} + +static void +eqn_text(struct html *p, const struct eqn_box *bp) +{ + + if (bp->text) + print_text(p, bp->text); +} @@ -27,10 +27,10 @@ #include "out.h" #include "term.h" -static void eqn_box(struct termp *p, const struct eqn_box *); -static void eqn_box_post(struct termp *p, const struct eqn_box *); -static void eqn_box_pre(struct termp *p, const struct eqn_box *); -static void eqn_text(struct termp *p, const struct eqn_box *); +static void eqn_box(struct termp *, const struct eqn_box *); +static void eqn_box_post(struct termp *, const struct eqn_box *); +static void eqn_box_pre(struct termp *, const struct eqn_box *); +static void eqn_text(struct termp *, const struct eqn_box *); void term_eqn(struct termp *p, const struct eqn *ep) @@ -141,6 +141,7 @@ void print_stagq(struct html *, const struct tag *); void print_text(struct html *, const char *); void print_tblclose(struct html *); void print_tbl(struct html *, const struct tbl_span *); +void print_eqn(struct html *, const struct eqn *); void bufcat_fmt(struct html *, const char *, ...); void bufcat(struct html *, const char *); @@ -201,7 +201,6 @@ print_man_node(MAN_ARGS) { int child; struct tag *t; - struct htmlpair tag; child = 1; t = h->tags.head; @@ -229,9 +228,7 @@ print_man_node(MAN_ARGS) print_text(h, n->string); return; case (MAN_EQN): - PAIR_CLASS_INIT(&tag, "eqn"); - /*print_otag(h, TAG_SPAN, 1, &tag); - print_text(h, n->eqn->data);*/ + print_eqn(h, n->eqn); break; case (MAN_TBL): /* diff --git a/mdoc_html.c b/mdoc_html.c index de167d54..0317a6ad 100644 --- a/mdoc_html.c +++ b/mdoc_html.c @@ -407,7 +407,6 @@ print_mdoc_node(MDOC_ARGS) { int child; struct tag *t; - struct htmlpair tag; child = 1; t = h->tags.head; @@ -434,9 +433,7 @@ print_mdoc_node(MDOC_ARGS) h->flags |= HTML_NOSPACE; return; case (MDOC_EQN): - PAIR_CLASS_INIT(&tag, "eqn"); - /*print_otag(h, TAG_SPAN, 1, &tag); - print_text(h, n->eqn->data);*/ + print_eqn(h, n->eqn); break; case (MDOC_TBL): /* |