version 1.247, 2018/12/16 00:17:02 |
version 1.250, 2019/01/07 07:26:29 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> |
* 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 |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
Line 78 static const struct htmldata htmltags[TAG_MAX] = { |
|
Line 78 static const struct htmldata htmltags[TAG_MAX] = { |
|
{"dl", HTML_NLALL | HTML_INDENT}, |
{"dl", HTML_NLALL | HTML_INDENT}, |
{"dt", HTML_NLAROUND}, |
{"dt", HTML_NLAROUND}, |
{"dd", HTML_NLAROUND | HTML_INDENT}, |
{"dd", HTML_NLAROUND | HTML_INDENT}, |
|
{"p", HTML_NLAROUND | HTML_INDENT}, |
{"pre", HTML_NLALL | HTML_NOINDENT}, |
{"pre", HTML_NLALL | HTML_NOINDENT}, |
{"var", 0}, |
{"var", 0}, |
{"cite", 0}, |
{"cite", 0}, |
Line 265 print_metaf(struct html *h, enum mandoc_esc deco) |
|
Line 266 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 || t->tag == TAG_PRE) { |
|
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. |
|
*/ |
|
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: |
|
html_close_paragraph(h); |
|
print_otag(h, TAG_PRE, ""); |
|
break; |
|
case TOKEN_NONE: |
|
break; |
|
default: |
|
abort(); |
|
} |
|
} |
|
return had; |
|
} |
|
|
char * |
char * |
html_make_id(const struct roff_node *n, int unique) |
html_make_id(const struct roff_node *n, int unique) |
{ |
{ |
Line 786 print_tagq(struct html *h, const struct tag *until) |
|
Line 834 print_tagq(struct html *h, const struct tag *until) |
|
|
|
while ((tag = h->tag) != NULL) { |
while ((tag = h->tag) != NULL) { |
print_ctag(h, tag); |
print_ctag(h, tag); |
if (until && tag == until) |
if (tag == until) |
return; |
return; |
} |
} |
} |
} |
|
|
|
/* |
|
* Close out all open elements up to but excluding suntil. |
|
* Note that a paragraph just inside stays open together with it |
|
* because paragraphs include subsequent phrasing content. |
|
*/ |
void |
void |
print_stagq(struct html *h, const struct tag *suntil) |
print_stagq(struct html *h, const struct tag *suntil) |
{ |
{ |
struct tag *tag; |
struct tag *tag; |
|
|
while ((tag = h->tag) != NULL) { |
while ((tag = h->tag) != NULL) { |
if (suntil && tag == suntil) |
if (tag == suntil || |
|
(tag->next == suntil && |
|
(tag->tag == TAG_P || tag->tag == TAG_PRE))) |
return; |
return; |
print_ctag(h, tag); |
print_ctag(h, tag); |
} |
} |
} |
|
|
|
void |
|
print_paragraph(struct html *h) |
|
{ |
|
struct tag *t; |
|
|
|
t = print_otag(h, TAG_DIV, "c", "Pp"); |
|
print_tagq(h, t); |
|
} |
} |
|
|
|
|