From b319284232133fdd31db9dc5894da706c99eda06 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Wed, 11 Jan 2017 17:39:53 +0000 Subject: Do text production for .Bt, .Ex, .Rv, .Ud at the validation stage rather than in the formatters. Use NODE_NOSRC flag for .Lb and NODE_NOSRC and NODE_NOPRT for .St. Results in a more rigorous syntax tree and in 135 lines less code. This work was triggered by a question from Abhinav Upadhyay (NetBSD) on discuss@. --- mdoc_html.c | 116 +++--------------------------------------------------------- 1 file changed, 4 insertions(+), 112 deletions(-) (limited to 'mdoc_html.c') diff --git a/mdoc_html.c b/mdoc_html.c index 7e11f8fc..d773b822 100644 --- a/mdoc_html.c +++ b/mdoc_html.c @@ -70,7 +70,6 @@ static int mdoc_bf_pre(MDOC_ARGS); static void mdoc_bk_post(MDOC_ARGS); static int mdoc_bk_pre(MDOC_ARGS); static int mdoc_bl_pre(MDOC_ARGS); -static int mdoc_bt_pre(MDOC_ARGS); static int mdoc_cd_pre(MDOC_ARGS); static int mdoc_d1_pre(MDOC_ARGS); static int mdoc_dv_pre(MDOC_ARGS); @@ -106,7 +105,6 @@ static int mdoc_pp_pre(MDOC_ARGS); static void mdoc_quote_post(MDOC_ARGS); static int mdoc_quote_pre(MDOC_ARGS); static int mdoc_rs_pre(MDOC_ARGS); -static int mdoc_rv_pre(MDOC_ARGS); static int mdoc_sh_pre(MDOC_ARGS); static int mdoc_skip_pre(MDOC_ARGS); static int mdoc_sm_pre(MDOC_ARGS); @@ -114,7 +112,6 @@ static int mdoc_sp_pre(MDOC_ARGS); static int mdoc_ss_pre(MDOC_ARGS); static int mdoc_sx_pre(MDOC_ARGS); static int mdoc_sy_pre(MDOC_ARGS); -static int mdoc_ud_pre(MDOC_ARGS); static int mdoc_va_pre(MDOC_ARGS); static int mdoc_vt_pre(MDOC_ARGS); static int mdoc_xr_pre(MDOC_ARGS); @@ -157,7 +154,7 @@ static const struct htmlmdoc mdocs[MDOC_MAX] = { {mdoc_quote_pre, mdoc_quote_post}, /* Op */ {mdoc_ft_pre, NULL}, /* Ot */ {mdoc_pa_pre, NULL}, /* Pa */ - {mdoc_rv_pre, NULL}, /* Rv */ + {mdoc_ex_pre, NULL}, /* Rv */ {NULL, NULL}, /* St */ {mdoc_va_pre, NULL}, /* Va */ {mdoc_vt_pre, NULL}, /* Vt */ @@ -223,10 +220,10 @@ static const struct htmlmdoc mdocs[MDOC_MAX] = { {NULL, NULL}, /* Oc */ {mdoc_bk_pre, mdoc_bk_post}, /* Bk */ {NULL, NULL}, /* Ek */ - {mdoc_bt_pre, NULL}, /* Bt */ + {NULL, NULL}, /* Bt */ {NULL, NULL}, /* Hf */ {mdoc_em_pre, NULL}, /* Fr */ - {mdoc_ud_pre, NULL}, /* Ud */ + {NULL, NULL}, /* Ud */ {mdoc_lb_pre, NULL}, /* Lb */ {mdoc_pp_pre, NULL}, /* Lp */ {mdoc_lk_pre, NULL}, /* Lk */ @@ -921,43 +918,9 @@ mdoc_bl_pre(MDOC_ARGS) static int mdoc_ex_pre(MDOC_ARGS) { - struct htmlpair tag; - struct tag *t; - struct roff_node *nch; - if (n->prev) print_otag(h, TAG_BR, 0, NULL); - - PAIR_CLASS_INIT(&tag, "utility"); - - print_text(h, "The"); - - for (nch = n->child; nch != NULL; nch = nch->next) { - assert(nch->type == ROFFT_TEXT); - - t = print_otag(h, TAG_B, 1, &tag); - print_text(h, nch->string); - print_tagq(h, t); - - if (nch->next == NULL) - continue; - - if (nch->prev != NULL || nch->next->next != NULL) { - h->flags |= HTML_NOSPACE; - print_text(h, ","); - } - - if (nch->next->next == NULL) - print_text(h, "and"); - } - - if (n->child != NULL && n->child->next != NULL) - print_text(h, "utilities exit\\~0"); - else - print_text(h, "utility exits\\~0"); - - print_text(h, "on success, and\\~>0 if an error occurs."); - return 0; + return 1; } static int @@ -1634,61 +1597,6 @@ mdoc_ic_pre(MDOC_ARGS) return 1; } -static int -mdoc_rv_pre(MDOC_ARGS) -{ - struct htmlpair tag; - struct tag *t; - struct roff_node *nch; - - if (n->prev) - print_otag(h, TAG_BR, 0, NULL); - - PAIR_CLASS_INIT(&tag, "fname"); - - if (n->child != NULL) { - print_text(h, "The"); - - for (nch = n->child; nch != NULL; nch = nch->next) { - t = print_otag(h, TAG_B, 1, &tag); - print_text(h, nch->string); - print_tagq(h, t); - - h->flags |= HTML_NOSPACE; - print_text(h, "()"); - - if (nch->next == NULL) - continue; - - if (nch->prev != NULL || nch->next->next != NULL) { - h->flags |= HTML_NOSPACE; - print_text(h, ","); - } - if (nch->next->next == NULL) - print_text(h, "and"); - } - - if (n->child != NULL && n->child->next != NULL) - print_text(h, "functions return"); - else - print_text(h, "function returns"); - - print_text(h, "the value\\~0 if successful;"); - } else - print_text(h, "Upon successful completion," - " the value\\~0 is returned;"); - - print_text(h, "otherwise the value\\~\\-1 is returned" - " and the global variable"); - - PAIR_CLASS_INIT(&tag, "var"); - t = print_otag(h, TAG_B, 1, &tag); - print_text(h, "errno"); - print_tagq(h, t); - print_text(h, "is set to indicate the error."); - return 0; -} - static int mdoc_va_pre(MDOC_ARGS) { @@ -1815,22 +1723,6 @@ mdoc_sy_pre(MDOC_ARGS) return 1; } -static int -mdoc_bt_pre(MDOC_ARGS) -{ - - print_text(h, "is currently in beta test."); - return 0; -} - -static int -mdoc_ud_pre(MDOC_ARGS) -{ - - print_text(h, "currently under development."); - return 0; -} - static int mdoc_lb_pre(MDOC_ARGS) { -- cgit