diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2019-01-06 04:55:09 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2019-01-06 04:55:09 +0000 |
commit | 9b3bcfda2071ff49dd238b2315b1cc49c09a1552 (patch) | |
tree | 930e58bb00056f64a6942ed94bd64dfb194fcba0 /html.c | |
parent | 589d3fbc1807388fbe883742468701520d81c047 (diff) | |
download | mandoc-9b3bcfda2071ff49dd238b2315b1cc49c09a1552.tar.gz mandoc-9b3bcfda2071ff49dd238b2315b1cc49c09a1552.tar.zst mandoc-9b3bcfda2071ff49dd238b2315b1cc49c09a1552.zip |
Finally, represent the man(7) .PP and .HP macros by the natural
choice, which is the <p> HTML element. On top of the previous
fill-mode improvements, the key to making this possible is to
automatically close the <p> when required: before headers, subsequent
paragraphs, lists, indented blocks, synopsis blocks, tbl(7) blocks,
and before blocks using no-fill mode.
In man(7) documents, represent the .sp request by a blank line in
no-fill mode and in the same way as .PP in fill mode.
Diffstat (limited to 'html.c')
-rw-r--r-- | html.c | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -1,7 +1,7 @@ -/* $Id: html.c,v 1.248 2019/01/05 09:14:44 schwarze Exp $ */ +/* $Id: html.c,v 1.249 2019/01/06 04:55:09 schwarze Exp $ */ /* * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> - * Copyright (c) 2011-2015, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2011-2015, 2017-2019 Ingo Schwarze <schwarze@openbsd.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -78,6 +78,7 @@ static const struct htmldata htmltags[TAG_MAX] = { {"dl", HTML_NLALL | HTML_INDENT}, {"dt", HTML_NLAROUND}, {"dd", HTML_NLAROUND | HTML_INDENT}, + {"p", HTML_NLAROUND | HTML_INDENT}, {"pre", HTML_NLALL | HTML_NOINDENT}, {"var", 0}, {"cite", 0}, @@ -265,6 +266,19 @@ print_metaf(struct html *h, enum mandoc_esc deco) } } +void +html_close_paragraph(struct html *h) +{ + struct tag *t; + + for (t = h->tag; t != NULL; t = t->next) { + if (t->tag == TAG_P) { + print_tagq(h, t); + break; + } + } +} + /* * ROFF_nf switches to no-fill mode, ROFF_fi to fill mode. * TOKEN_NONE does not switch. The old mode is returned. @@ -287,6 +301,7 @@ html_fillmode(struct html *h, enum roff_tok want) print_tagq(h, t); break; case ROFF_nf: + html_close_paragraph(h); print_otag(h, TAG_PRE, ""); break; case TOKEN_NONE: |