X-Git-Url: https://git.cameronkatri.com/mandoc.git/blobdiff_plain/2debde16583c6e330407391e74591b82ec962814..d91b30bd5760ebf59ab223a78426a9fc33d80d00:/html.c?ds=sidebyside diff --git a/html.c b/html.c index a2da5931..0ad84e4f 100644 --- a/html.c +++ b/html.c @@ -1,4 +1,4 @@ -/* $Id: html.c,v 1.94 2010/01/30 06:55:56 kristaps Exp $ */ +/* $Id: html.c,v 1.99 2010/04/12 19:45:39 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -54,7 +54,7 @@ static const struct htmldata htmltags[TAG_MAX] = { {"h1", 0}, /* TAG_H1 */ {"h2", 0}, /* TAG_H2 */ {"span", 0}, /* TAG_SPAN */ - {"link", HTML_CLRLINE | HTML_NOSTACK}, /* TAG_LINK */ + {"link", HTML_CLRLINE | HTML_NOSTACK | HTML_AUTOCLOSE}, /* TAG_LINK */ {"br", HTML_CLRLINE | HTML_NOSTACK | HTML_AUTOCLOSE}, /* TAG_BR */ {"a", 0}, /* TAG_A */ {"table", HTML_CLRLINE}, /* TAG_TABLE */ @@ -312,7 +312,6 @@ print_encode(struct html *h, const char *p, int norecurse) } else if ('>' == *p) { printf(">"); continue; - /* FIXME: already escaped? */ } else if ('&' == *p) { printf("&"); continue; @@ -467,19 +466,23 @@ print_doctype(struct html *h) { const char *doctype; const char *dtd; + const char *name; switch (h->type) { case (HTML_HTML_4_01_STRICT): + name = "HTML"; doctype = "-//W3C//DTD HTML 4.01//EN"; dtd = "http://www.w3.org/TR/html4/strict.dtd"; break; default: + name = "html"; doctype = "-//W3C//DTD XHTML 1.0 Strict//EN"; dtd = "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"; break; } - printf("\n", doctype, dtd); + printf("\n", + name, doctype, dtd); } @@ -504,8 +507,6 @@ print_text(struct html *h, const char *p) case(')'): /* FALLTHROUGH */ case(']'): - /* FALLTHROUGH */ - case('}'): if ( ! (HTML_IGNDELIM & h->flags)) h->flags |= HTML_NOSPACE; break; @@ -520,13 +521,15 @@ print_text(struct html *h, const char *p) if ( ! print_encode(h, p, 0)) h->flags &= ~HTML_NOSPACE; + /* + * Note that we don't process the pipe: the parser sees it as + * punctuation, but we don't in terms of typography. + */ if (*p && 0 == *(p + 1)) switch (*p) { case('('): /* FALLTHROUGH */ case('['): - /* FALLTHROUGH */ - case('{'): h->flags |= HTML_NOSPACE; break; default: