-/* $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 <kristaps@kth.se>
*
{"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 */
} else if ('>' == *p) {
printf(">");
continue;
- /* FIXME: already escaped? */
} else if ('&' == *p) {
printf("&");
continue;
{
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("<!DOCTYPE HTML PUBLIC \"%s\" \"%s\">\n", doctype, dtd);
+ printf("<!DOCTYPE %s PUBLIC \"%s\" \"%s\">\n",
+ name, doctype, dtd);
}
case(')'):
/* FALLTHROUGH */
case(']'):
- /* FALLTHROUGH */
- case('}'):
if ( ! (HTML_IGNDELIM & h->flags))
h->flags |= HTML_NOSPACE;
break;
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: