summaryrefslogtreecommitdiffstats
path: root/mdoc_html.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-01-20 19:58:07 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-01-20 19:58:07 +0000
commitdaab3cc3621a1b4041c5f13eb824dac81300a964 (patch)
treefc413ae5da23eec84ffdfe1fde02b6953e6a8281 /mdoc_html.c
parent6c9e7368eafc1fe651b675323e22e1759711e6da (diff)
downloadmandoc-daab3cc3621a1b4041c5f13eb824dac81300a964.tar.gz
standardize .Bl and .It class attributes
Diffstat (limited to 'mdoc_html.c')
-rw-r--r--mdoc_html.c174
1 files changed, 103 insertions, 71 deletions
diff --git a/mdoc_html.c b/mdoc_html.c
index a0d90316..dd6a63d9 100644
--- a/mdoc_html.c
+++ b/mdoc_html.c
@@ -242,21 +242,6 @@ static const struct htmlmdoc mdocs[MDOC_MAX] = {
{mdoc_skip_pre, NULL}, /* ll */
};
-static const char * const lists[LIST_MAX] = {
- NULL,
- "list-bul",
- "list-col",
- "list-dash",
- "list-diag",
- "list-enum",
- "list-hang",
- "list-hyph",
- "list-inset",
- "list-item",
- "list-ohang",
- "list-tag"
-};
-
/*
* See the same function in mdoc_term.c for documentation.
@@ -683,75 +668,104 @@ mdoc_xx_pre(MDOC_ARGS)
static int
mdoc_it_pre(MDOC_ARGS)
{
- enum mdoc_list type;
- const struct roff_node *bl;
+ const struct roff_node *bl;
+ const char *cattr;
+ enum mdoc_list type;
bl = n->parent;
- while (bl && MDOC_Bl != bl->tok)
+ while (bl != NULL && bl->tok != MDOC_Bl)
bl = bl->parent;
type = bl->norm->Bl.type;
- if (n->type == ROFFT_HEAD) {
- switch (type) {
- case LIST_bullet:
- case LIST_dash:
- case LIST_item:
- case LIST_hyphen:
- case LIST_enum:
+ switch (type) {
+ case LIST_bullet:
+ cattr = "It-bullet";
+ break;
+ case LIST_dash:
+ case LIST_hyphen:
+ cattr = "It-dash";
+ break;
+ case LIST_item:
+ cattr = "It-item";
+ break;
+ case LIST_enum:
+ cattr = "It-enum";
+ break;
+ case LIST_diag:
+ cattr = "It-diag";
+ break;
+ case LIST_hang:
+ cattr = "It-hang";
+ break;
+ case LIST_inset:
+ cattr = "It-inset";
+ break;
+ case LIST_ohang:
+ cattr = "It-ohang";
+ break;
+ case LIST_tag:
+ cattr = "It-tag";
+ break;
+ case LIST_column:
+ cattr = "It-column";
+ break;
+ default:
+ break;
+ }
+
+ switch (type) {
+ case LIST_bullet:
+ case LIST_dash:
+ case LIST_hyphen:
+ case LIST_item:
+ case LIST_enum:
+ switch (n->type) {
+ case ROFFT_HEAD:
return 0;
- case LIST_diag:
- case LIST_hang:
- case LIST_inset:
- case LIST_ohang:
- case LIST_tag:
- print_otag(h, TAG_DT, "csvt", lists[type],
+ case ROFFT_BODY:
+ print_otag(h, TAG_LI, "csvt", cattr,
!bl->norm->Bl.comp);
- if (LIST_diag != type)
- break;
- print_otag(h, TAG_B, "c", "diag");
- break;
- case LIST_column:
break;
default:
break;
}
- } else if (n->type == ROFFT_BODY) {
- switch (type) {
- case LIST_bullet:
- case LIST_hyphen:
- case LIST_dash:
- case LIST_enum:
- case LIST_item:
- print_otag(h, TAG_LI, "csvt", lists[type],
+ break;
+ case LIST_diag:
+ case LIST_hang:
+ case LIST_inset:
+ case LIST_ohang:
+ case LIST_tag:
+ switch (n->type) {
+ case ROFFT_HEAD:
+ print_otag(h, TAG_DT, "csvt", cattr,
!bl->norm->Bl.comp);
+ if (type == LIST_diag)
+ print_otag(h, TAG_B, "c", cattr);
break;
- case LIST_diag:
- case LIST_hang:
- case LIST_inset:
- case LIST_ohang:
- case LIST_tag:
- if (NULL == bl->norm->Bl.width) {
- print_otag(h, TAG_DD, "c", lists[type]);
- break;
- }
- print_otag(h, TAG_DD, "cswl", lists[type],
- bl->norm->Bl.width);
- break;
- case LIST_column:
- print_otag(h, TAG_TD, "csvt", lists[type],
- !bl->norm->Bl.comp);
+ case ROFFT_BODY:
+ if (bl->norm->Bl.width == NULL)
+ print_otag(h, TAG_DD, "c", cattr);
+ else
+ print_otag(h, TAG_DD, "cswl", cattr,
+ bl->norm->Bl.width);
break;
default:
break;
}
- } else {
- switch (type) {
- case LIST_column:
- print_otag(h, TAG_TR, "c", lists[type]);
+ break;
+ case LIST_column:
+ switch (n->type) {
+ case ROFFT_HEAD:
break;
- default:
+ case ROFFT_BODY:
+ print_otag(h, TAG_TD, "csvt", cattr,
+ !bl->norm->Bl.comp);
break;
+ default:
+ print_otag(h, TAG_TR, "c", cattr);
}
+ default:
+ break;
}
return 1;
@@ -760,8 +774,8 @@ mdoc_it_pre(MDOC_ARGS)
static int
mdoc_bl_pre(MDOC_ARGS)
{
+ const char *cattr;
int i;
- char buf[BUFSIZ];
enum htmltag elemtype;
if (n->type == ROFFT_BODY) {
@@ -788,39 +802,57 @@ mdoc_bl_pre(MDOC_ARGS)
return 0;
}
- assert(lists[n->norm->Bl.type]);
- (void)strlcpy(buf, "list ", BUFSIZ);
- (void)strlcat(buf, lists[n->norm->Bl.type], BUFSIZ);
-
switch (n->norm->Bl.type) {
case LIST_bullet:
+ elemtype = TAG_UL;
+ cattr = "Bl-bullet";
+ break;
case LIST_dash:
case LIST_hyphen:
+ elemtype = TAG_UL;
+ cattr = "Bl-dash";
+ break;
case LIST_item:
elemtype = TAG_UL;
+ cattr = "Bl-item";
break;
case LIST_enum:
elemtype = TAG_OL;
+ cattr = "Bl-enum";
break;
case LIST_diag:
+ elemtype = TAG_DL;
+ cattr = "Bl-diag";
+ break;
case LIST_hang:
+ elemtype = TAG_DL;
+ cattr = "Bl-hang";
+ break;
case LIST_inset:
+ elemtype = TAG_DL;
+ cattr = "Bl-inset";
+ break;
case LIST_ohang:
+ elemtype = TAG_DL;
+ cattr = "Bl-ohang";
+ break;
case LIST_tag:
elemtype = TAG_DL;
+ cattr = "Bl-tag";
break;
case LIST_column:
elemtype = TAG_TABLE;
+ cattr = "Bl-column";
break;
default:
abort();
}
if (n->norm->Bl.offs)
- print_otag(h, elemtype, "csvtvbwl", buf, 0, 0,
+ print_otag(h, elemtype, "csvtvbwl", cattr, 0, 0,
n->norm->Bl.offs);
else
- print_otag(h, elemtype, "csvtvb", buf, 0, 0);
+ print_otag(h, elemtype, "csvtvb", cattr, 0, 0);
return 1;
}