diff options
-rw-r--r-- | default.html | 6 | ||||
-rw-r--r-- | html.c | 22 |
2 files changed, 24 insertions, 4 deletions
diff --git a/default.html b/default.html index 7059e61..9190086 100644 --- a/default.html +++ b/default.html @@ -98,6 +98,12 @@ pre q::before, pre q::after { pre q { color: navy; } +pre q q { + color: teal; +} +pre q q q { + color: purple; +} pre del { text-decoration: none; color: red; diff --git a/html.c b/html.c index ee9e966..12f3ff0 100644 --- a/html.c +++ b/html.c @@ -253,6 +253,23 @@ static int htmlMarkupURLs(FILE *file, char *buf) { return escapeXML(file, ptr); } +static int htmlMarkupQuote(FILE *file, char *buf) { + int error; + size_t level = 0; + for (char *ch = buf; *ch == '>' || *ch == ' '; level += (*ch++ == '>')); + for (size_t i = 0; i < level; ++i) { + error = templateRender(file, TEMPLATE(<q>), NULL, NULL); + if (error) return error; + } + error = htmlMarkupURLs(file, buf); + if (error) return error; + for (size_t i = 0; i < level; ++i) { + error = templateRender(file, TEMPLATE(</q>), NULL, NULL); + if (error) return error; + } + return 0; +} + static int htmlMarkup(FILE *file, const char *content) { int error = 0; size_t cap = 0; @@ -299,10 +316,7 @@ static int htmlMarkup(FILE *file, const char *content) { } else if (patch) { error = escapeXML(file, buf); } else if (buf[0] == '>') { - error = 0 - || templateRender(file, TEMPLATE(<q>), NULL, NULL) - || htmlMarkupURLs(file, buf) - || templateRender(file, TEMPLATE(</q>), NULL, NULL); + error = htmlMarkupQuote(file, buf); } else { error = htmlMarkupURLs(file, buf); } |