summaryrefslogtreecommitdiffstatshomepage
path: root/mdoc_html.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-12-17 01:02:00 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-12-17 01:02:00 +0000
commite475285cd277f9da6cc63e7cdf31e74385a3ccc1 (patch)
tree227f33a65fcb4fcd94f0cbc2c3d9c402cbbfad87 /mdoc_html.c
parent6b21ebaff4af30f3415bd32d79d72952f3e89fab (diff)
downloadmandoc-e475285cd277f9da6cc63e7cdf31e74385a3ccc1.tar.gz
mandoc-e475285cd277f9da6cc63e7cdf31e74385a3ccc1.tar.zst
mandoc-e475285cd277f9da6cc63e7cdf31e74385a3ccc1.zip
Make SYNOPSIS `Nm' use a TABLE in -T[x]html mode. Also fix `Nd' using
desc-body instead of desc as its CSS key.
Diffstat (limited to 'mdoc_html.c')
-rw-r--r--mdoc_html.c88
1 files changed, 33 insertions, 55 deletions
diff --git a/mdoc_html.c b/mdoc_html.c
index 177df7f0..15c1cc7a 100644
--- a/mdoc_html.c
+++ b/mdoc_html.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_html.c,v 1.123 2010/12/17 00:18:29 kristaps Exp $ */
+/* $Id: mdoc_html.c,v 1.124 2010/12/17 01:02:00 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -644,7 +644,7 @@ mdoc_nd_pre(MDOC_ARGS)
/* XXX: this tag in theory can contain block elements. */
print_text(h, "\\(em");
- PAIR_CLASS_INIT(&tag, "desc-body");
+ PAIR_CLASS_INIT(&tag, "desc");
print_otag(h, TAG_SPAN, 1, &tag);
return(1);
}
@@ -655,68 +655,46 @@ mdoc_nm_pre(MDOC_ARGS)
{
struct htmlpair tag;
struct roffsu su;
- const char *cp;
+ size_t len;
- /*
- * Accomodate for `Nm' being both an element (which may have
- * NULL children AND no m->name) and a block.
- */
-
- cp = NULL;
-
- if (MDOC_ELEM == n->type) {
- if (NULL == n->child && NULL == m->name)
- return(1);
+ switch (n->type) {
+ case (MDOC_ELEM):
synopsis_pre(h, n);
PAIR_CLASS_INIT(&tag, "name");
print_otag(h, TAG_SPAN, 1, &tag);
- if (NULL == n->child)
+ if (NULL == n->child && m->name)
print_text(h, m->name);
- } else if (MDOC_BLOCK == n->type) {
- synopsis_pre(h, n);
-
- bufcat_style(h, "clear", "both");
- if (n->head->child || m->name) {
- if (n->head->child && MDOC_TEXT ==
- n->head->child->type)
- cp = n->head->child->string;
- if (NULL == cp || '\0' == *cp)
- cp = m->name;
-
- SCALE_HS_INIT(&su, (double)strlen(cp));
- bufcat_su(h, "padding-left", &su);
- }
-
- PAIR_STYLE_INIT(&tag, h);
- print_otag(h, TAG_DIV, 1, &tag);
- } else if (MDOC_HEAD == n->type) {
- if (NULL == n->child && NULL == m->name)
- return(1);
-
- if (n->child && MDOC_TEXT == n->child->type)
- cp = n->child->string;
- if (NULL == cp || '\0' == *cp)
- cp = m->name;
-
- SCALE_HS_INIT(&su, (double)strlen(cp));
+ return(1);
+ case (MDOC_HEAD):
+ print_otag(h, TAG_TD, 0, NULL);
+ if (NULL == n->child && m->name)
+ print_text(h, m->name);
+ return(1);
+ case (MDOC_BODY):
+ print_otag(h, TAG_TD, 0, NULL);
+ return(1);
+ default:
+ break;
+ }
- bufcat_style(h, "float", "left");
- bufcat_su(h, "min-width", &su);
- SCALE_INVERT(&su);
- bufcat_su(h, "margin-left", &su);
+ synopsis_pre(h, n);
+ PAIR_CLASS_INIT(&tag, "synopsis");
+ print_otag(h, TAG_TABLE, 1, &tag);
- PAIR_STYLE_INIT(&tag, h);
- print_otag(h, TAG_DIV, 1, &tag);
+ for (len = 0, n = n->child; n; n = n->next)
+ if (MDOC_TEXT == n->type)
+ len += strlen(n->string);
- if (NULL == n->child)
- print_text(h, m->name);
- } else if (MDOC_BODY == n->type) {
- SCALE_HS_INIT(&su, 2);
- bufcat_su(h, "margin-left", &su);
- PAIR_STYLE_INIT(&tag, h);
- print_otag(h, TAG_DIV, 1, &tag);
- }
+ if (0 == len && m->name)
+ len = strlen(m->name);
+ SCALE_HS_INIT(&su, (double)len);
+ bufcat_su(h, "width", &su);
+ PAIR_STYLE_INIT(&tag, h);
+ print_otag(h, TAG_COL, 1, &tag);
+ print_otag(h, TAG_COL, 0, NULL);
+ print_otag(h, TAG_TBODY, 0, NULL);
+ print_otag(h, TAG_TR, 0, NULL);
return(1);
}