diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2014-10-30 20:10:02 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2014-10-30 20:10:02 +0000 |
commit | b1573399d364f789f4e71b2dc02d52688bdd1605 (patch) | |
tree | b001869ef99a8d43fed78d8b8891370fbebd7e8c /mdoc_html.c | |
parent | 43e328cce4bb9763404660bc28b055e4959842f3 (diff) | |
download | mandoc-b1573399d364f789f4e71b2dc02d52688bdd1605.tar.gz |
Major bugsquashing with respect to -offset and -width:
1. Support specifying the .Bd and .Bl -offset as a macro default width;
while here, simplify the code handling the same for .Bl -width.
2. Correct handling of .Bl -offset arguments: unlike .Bd -offset, the
arguments "left", "indent", and "indent-two" have no special meaning.
3. Fix the scaling of string length -offset and -width arguments in -Thtml.
Triggered by an incomplete documentation patch from bentley@.
Diffstat (limited to 'mdoc_html.c')
-rw-r--r-- | mdoc_html.c | 40 |
1 files changed, 13 insertions, 27 deletions
diff --git a/mdoc_html.c b/mdoc_html.c index 1038f3a9..04d3883e 100644 --- a/mdoc_html.c +++ b/mdoc_html.c @@ -56,7 +56,6 @@ static void synopsis_pre(struct html *, const struct mdoc_node *); static void a2width(const char *, struct roffsu *); -static void a2offs(const char *, struct roffsu *); static void mdoc_root_post(MDOC_ARGS); static int mdoc_root_pre(MDOC_ARGS); @@ -281,7 +280,7 @@ a2width(const char *p, struct roffsu *su) { if ( ! a2roffsu(p, su, SCALE_MAX)) { - su->unit = SCALE_BU; + su->unit = SCALE_EN; su->scale = html_strlen(p); } } @@ -328,27 +327,6 @@ synopsis_pre(struct html *h, const struct mdoc_node *n) } } -/* - * Calculate the scaling unit passed in an `-offset' argument. This - * uses either a native scaling unit (e.g., 1i, 2m), one of a set of - * predefined strings (indent, etc.), or the string length of the value. - */ -static void -a2offs(const char *p, struct roffsu *su) -{ - - /* FIXME: "right"? */ - - if (0 == strcmp(p, "left")) - SCALE_HS_INIT(su, 0); - else if (0 == strcmp(p, "indent")) - SCALE_HS_INIT(su, INDENT); - else if (0 == strcmp(p, "indent-two")) - SCALE_HS_INIT(su, INDENT * 2); - else if ( ! a2roffsu(p, su, SCALE_MAX)) - SCALE_HS_INIT(su, html_strlen(p)); -} - static void print_mdoc(MDOC_ARGS) { @@ -994,7 +972,7 @@ mdoc_bl_pre(MDOC_ARGS) /* Set the block's left-hand margin. */ if (n->norm->Bl.offs) { - a2offs(n->norm->Bl.offs, &su); + a2width(n->norm->Bl.offs, &su); bufcat_su(h, "margin-left", &su); } @@ -1160,9 +1138,17 @@ mdoc_bd_pre(MDOC_ARGS) return(1); } - SCALE_HS_INIT(&su, 0); - if (n->norm->Bd.offs) - a2offs(n->norm->Bd.offs, &su); + /* Handle the -offset argument. */ + + if (n->norm->Bd.offs == NULL || + ! strcmp(n->norm->Bd.offs, "left")) + SCALE_HS_INIT(&su, 0); + else if ( ! strcmp(n->norm->Bd.offs, "indent")) + SCALE_HS_INIT(&su, INDENT); + else if ( ! strcmp(n->norm->Bd.offs, "indent-two")) + SCALE_HS_INIT(&su, INDENT * 2); + else + a2width(n->norm->Bd.offs, &su); bufinit(h); bufcat_su(h, "margin-left", &su); |