summaryrefslogtreecommitdiffstatshomepage
path: root/html.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-09-20 17:48:13 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-09-20 17:48:13 +0000
commit8d0cb4701ac5891d39e391edc850d949676cbe04 (patch)
treec4a33f2269d817ca5857a5c39c41f0493fbbbe89 /html.c
parent96e92e6c41ad5a446f70c73cc7273bffb8c6c17d (diff)
downloadmandoc-8d0cb4701ac5891d39e391edc850d949676cbe04.tar.gz
mandoc-8d0cb4701ac5891d39e391edc850d949676cbe04.tar.zst
mandoc-8d0cb4701ac5891d39e391edc850d949676cbe04.zip
Bl -column in place for -Thtml.
Diffstat (limited to 'html.c')
-rw-r--r--html.c30
1 files changed, 26 insertions, 4 deletions
diff --git a/html.c b/html.c
index 358568f5..fb34e9fe 100644
--- a/html.c
+++ b/html.c
@@ -1,4 +1,4 @@
-/* $Id: html.c,v 1.37 2009/09/20 17:24:57 kristaps Exp $ */
+/* $Id: html.c,v 1.38 2009/09/20 17:48:13 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -1271,6 +1271,8 @@ mdoc_tbl_block_pre(MDOC_ARGS, int t, int w, int o, int c)
struct htmlpair tag;
switch (t) {
+ case (MDOC_Column):
+ /* FALLTHROUGH */
case (MDOC_Item):
/* FALLTHROUGH */
case (MDOC_Ohang):
@@ -1281,7 +1283,6 @@ mdoc_tbl_block_pre(MDOC_ARGS, int t, int w, int o, int c)
break;
}
-
if ( ! c && n->prev && n->prev->body->child)
bufcat("padding-top: 1em;");
@@ -1316,6 +1317,15 @@ mdoc_tbl_head_pre(MDOC_ARGS, int t, int w)
case (MDOC_Ohang):
print_otag(h, TAG_DIV, 0, NULL);
break;
+ case (MDOC_Column):
+ buffmt("min-width: %dem;", w);
+ bufcat("clear: none;");
+ if (n->next && MDOC_HEAD == n->next->type)
+ bufcat("float: left;");
+ tag.key = ATTR_STYLE;
+ tag.val = buf;
+ print_otag(h, TAG_DIV, 1, &tag);
+ break;
default:
buffmt("margin-left: -%dem;", w);
bufcat("clear: left;");
@@ -1360,8 +1370,8 @@ mdoc_tbl_head_pre(MDOC_ARGS, int t, int w)
static int
mdoc_tbl_pre(MDOC_ARGS, int type)
{
- int i, w, o, c;
- const struct mdoc_node *bl;
+ int i, w, o, c, wp;
+ const struct mdoc_node *bl, *nn;
bl = n->parent->parent;
if (MDOC_BLOCK != n->type)
@@ -1372,16 +1382,28 @@ mdoc_tbl_pre(MDOC_ARGS, int type)
assert(bl->args);
w = o = c = 0;
+ wp = -1;
for (i = 0; i < (int)bl->args->argc; i++)
if (MDOC_Width == bl->args->argv[i].arg) {
assert(bl->args->argv[i].sz);
+ wp = i;
w = a2width(bl->args->argv[i].value[0]);
} else if (MDOC_Offset == bl->args->argv[i].arg) {
assert(bl->args->argv[i].sz);
o = a2offs(bl->args->argv[i].value[0]);
} else if (MDOC_Compact == bl->args->argv[i].arg)
c = 1;
+
+ if (MDOC_HEAD == n->type && MDOC_Column == type) {
+ nn = n->parent->child;
+ assert(nn && MDOC_HEAD == nn->type);
+ for (i = 0; nn && nn != n; nn = nn->next, i++)
+ /* Counter... */ ;
+ assert(nn);
+ if (wp >= 0 && i < (int)bl->args[wp].argv->sz)
+ w = a2width(bl->args->argv[wp].value[i]);
+ }
switch (type) {
case (MDOC_Enum):