diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2018-10-02 19:44:15 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2018-10-02 19:44:15 +0000 |
commit | 5774a55f9b44f90dfc4ab652010a0e0282a35c42 (patch) | |
tree | 0247306c687c2c968f2370f189ed3b21f587c259 | |
parent | 5e258663903335b6f86880b026108c38a3f95c3c (diff) | |
download | mandoc-5774a55f9b44f90dfc4ab652010a0e0282a35c42.tar.gz mandoc-5774a55f9b44f90dfc4ab652010a0e0282a35c42.tar.zst mandoc-5774a55f9b44f90dfc4ab652010a0e0282a35c42.zip |
add DESCRIPTION and .Ss to the toc; suggested by espie@
-rw-r--r-- | mdoc_html.c | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/mdoc_html.c b/mdoc_html.c index 555046be..5be51643 100644 --- a/mdoc_html.c +++ b/mdoc_html.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_html.c,v 1.313 2018/10/02 14:56:47 schwarze Exp $ */ +/* $Id: mdoc_html.c,v 1.314 2018/10/02 19:44:15 schwarze Exp $ */ /* * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2014,2015,2016,2017,2018 Ingo Schwarze <schwarze@openbsd.org> @@ -507,8 +507,8 @@ cond_id(const struct roff_node *n) static int mdoc_sh_pre(MDOC_ARGS) { - struct roff_node *sn; - struct tag *t, *tt; + struct roff_node *sn, *subn; + struct tag *t, *tsec, *tsub; char *id; int sc; @@ -530,13 +530,29 @@ mdoc_sh_pre(MDOC_ARGS) print_text(h, "TABLE OF CONTENTS"); print_tagq(h, t); t = print_otag(h, TAG_UL, "c", "Bl-compact"); - for (sn = n->next; sn != NULL; sn = sn->next) { + for (sn = n; sn != NULL; sn = sn->next) { + tsec = print_otag(h, TAG_LI, ""); id = html_make_id(sn->head, 0); - tt = print_otag(h, TAG_LI, ""); print_otag(h, TAG_A, "hR", id); - print_mdoc_nodelist(meta, sn->head->child, h); - print_tagq(h, tt); free(id); + print_mdoc_nodelist(meta, sn->head->child, h); + tsub = NULL; + for (subn = sn->body->child; subn != NULL; + subn = subn->next) { + if (subn->tok != MDOC_Ss) + continue; + if (tsub == NULL) + print_otag(h, TAG_UL, + "c", "Bl-compact"); + tsub = print_otag(h, TAG_LI, ""); + id = html_make_id(subn->head, 0); + print_otag(h, TAG_A, "hR", id); + free(id); + print_mdoc_nodelist(meta, + subn->head->child, h); + print_tagq(h, tsub); + } + print_tagq(h, tsec); } print_tagq(h, t); break; |