aboutsummaryrefslogtreecommitdiffstatshomepage
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
commit234884d113221f817102fb404dadd44b4e860fb9 (patch)
tree7f21e39f312650081ca8b96e1086caf00c433cde
parent34111478132fd94d00d020f0fc5d1db62e12686a (diff)
downloadmandoc-234884d113221f817102fb404dadd44b4e860fb9.tar.gz
mandoc-234884d113221f817102fb404dadd44b4e860fb9.tar.zst
mandoc-234884d113221f817102fb404dadd44b4e860fb9.zip
Flip on equation printing for -T[x]html.
-rw-r--r--Makefile7
-rw-r--r--eqn_html.c89
-rw-r--r--eqn_term.c10
-rw-r--r--html.h3
-rw-r--r--man_html.c7
-rw-r--r--mdoc_html.c7
6 files changed, 105 insertions, 18 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..78e11d43
--- /dev/null
+++ b/eqn_html.c
@@ -0,0 +1,89 @@
+/* $Id: eqn_html.c,v 1.1 2011/07/23 22:57:13 kristaps Exp $ */
+/*
+ * 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 84eda30c..59671e84 100644
--- a/eqn_term.c
+++ b/eqn_term.c
@@ -1,4 +1,4 @@
-/* $Id: eqn_term.c,v 1.2 2011/07/23 12:01:54 kristaps Exp $ */
+/* $Id: eqn_term.c,v 1.3 2011/07/23 22:57:13 kristaps Exp $ */
/*
* Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -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 aba635f1..b382f3fe 100644
--- a/html.h
+++ b/html.h
@@ -1,4 +1,4 @@
-/* $Id: html.h,v 1.44 2011/05/17 11:34:31 kristaps Exp $ */
+/* $Id: html.h,v 1.45 2011/07/23 22:57:13 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -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 fa0b34b3..026364ae 100644
--- a/man_html.c
+++ b/man_html.c
@@ -1,4 +1,4 @@
-/* $Id: man_html.c,v 1.79 2011/07/21 11:34:53 kristaps Exp $ */
+/* $Id: man_html.c,v 1.80 2011/07/23 22:57:13 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -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 00bf4425..51d31e4b 100644
--- a/mdoc_html.c
+++ b/mdoc_html.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_html.c,v 1.173 2011/07/21 11:34:53 kristaps Exp $ */
+/* $Id: mdoc_html.c,v 1.174 2011/07/23 22:57:13 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -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):
/*