summaryrefslogtreecommitdiffstats
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
commit27d313e4174a4d5bdd74270ad96e4215b0eed47f (patch)
tree7c729569929c4c93315a662016ef1cdd23fa4b64 /mdoc_html.c
parent399d7ac77fc9850e46aaad716704be41f355d620 (diff)
downloadmandoc-27d313e4174a4d5bdd74270ad96e4215b0eed47f.tar.gz
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.c86
1 files changed, 32 insertions, 54 deletions
diff --git a/mdoc_html.c b/mdoc_html.c
index 9db19470..91a6c40c 100644
--- a/mdoc_html.c
+++ b/mdoc_html.c
@@ -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);
}