diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2019-01-05 09:14:44 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2019-01-05 09:14:44 +0000 |
commit | b039e0910fa465b73d66c37dc6f3c37a0be1e77e (patch) | |
tree | 3afc7a4af4cc7ca799ce86b128a2431db6c40aed /html.c | |
parent | df6a082de3c130efd8582d20d12e3dffa98ebd8f (diff) | |
download | mandoc-b039e0910fa465b73d66c37dc6f3c37a0be1e77e.tar.gz |
Now that the NODE_NOFILL flag in the syntax tree is accurate,
use it in the man(7) HTML formatter rather than keeping fill mode
state locally, resulting in massive simplification (minus 40 LOC).
Move the html_fillmode() state handler function to the html.c module
such that both the man(7) and the roff(7) formatter (and in the future,
also the mdoc(7) formatter) can use it. Give it a query mode, to be
invoked with TOKEN_NONE.
Diffstat (limited to 'html.c')
-rw-r--r-- | html.c | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -265,6 +265,39 @@ print_metaf(struct html *h, enum mandoc_esc deco) } } +/* + * ROFF_nf switches to no-fill mode, ROFF_fi to fill mode. + * TOKEN_NONE does not switch. The old mode is returned. + */ +enum roff_tok +html_fillmode(struct html *h, enum roff_tok want) +{ + struct tag *t; + enum roff_tok had; + + for (t = h->tag; t != NULL; t = t->next) + if (t->tag == TAG_PRE) + break; + + had = t == NULL ? ROFF_fi : ROFF_nf; + + if (want != had) { + switch (want) { + case ROFF_fi: + print_tagq(h, t); + break; + case ROFF_nf: + print_otag(h, TAG_PRE, ""); + break; + case TOKEN_NONE: + break; + default: + abort(); + } + } + return had; +} + char * html_make_id(const struct roff_node *n, int unique) { |