summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-07-23 22:57:13 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-07-23 22:57:13 +0000
commit7151bb8eeed729397435c0c693efc5546cfda123 (patch)
treee7cd99eb9b42eff87848d69b74a100ce56ee7332
parentd01207bfc948fdba1c7d2b8e9b46db9f3a91f3e9 (diff)
downloadmandoc-7151bb8eeed729397435c0c693efc5546cfda123.tar.gz
Flip on equation printing for -T[x]html.
-rw-r--r--Makefile7
-rw-r--r--eqn_html.c89
-rw-r--r--eqn_term.c8
-rw-r--r--html.h1
-rw-r--r--man_html.c5
-rw-r--r--mdoc_html.c5
6 files changed, 101 insertions, 14 deletions
diff --git a/Makefile b/Makefile
index 03d00fdd..eceee4fd 100644
--- a/Makefile
+++ b/Makefile
@@ -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);
+}
diff --git a/eqn_term.c b/eqn_term.c
index 0b00979c..ee0a75fb 100644
--- a/eqn_term.c
+++ b/eqn_term.c
@@ -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)
diff --git a/html.h b/html.h
index 49fdf877..4747388f 100644
--- a/html.h
+++ b/html.h
@@ -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 *);
diff --git a/man_html.c b/man_html.c
index f89b1c7a..3f7e0573 100644
--- a/man_html.c
+++ b/man_html.c
@@ -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):
/*