diff options
author | John MacFarlane <jgm@berkeley.edu> | 2015-07-12 16:13:46 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2015-07-12 16:13:46 -0700 |
commit | 511cb4a7c0a20810dcd996070f752fabc18a49e3 (patch) | |
tree | ed533150d369c87b48dde573bd33519570671a0a | |
parent | 49e015cdac778bf82baeb41f1b204668980c635b (diff) |
man renderer: Fixed character escaping, use new cmark_render_ascii.
-rw-r--r-- | src/man.c | 38 |
1 files changed, 17 insertions, 21 deletions
@@ -14,6 +14,7 @@ #define LIT(s) renderer->out(renderer, s, false, LITERAL) #define CR() renderer->cr(renderer) #define BLANKLINE() renderer->blankline(renderer) +#define ASCII(s) cmark_render_ascii(renderer, s) // Functions to convert cmark_nodes to groff man strings. static @@ -22,14 +23,18 @@ void S_outc(cmark_renderer *renderer, int32_t c, unsigned char nextc) { - (void)(escape); // avoid unused parameter warning (void)(nextc); + if (escape == LITERAL) { + utf8proc_encode_char(c, renderer->buffer); + renderer->column += 1; + return; + } + switch(c) { case 46: if (renderer->begin_line) { - cmark_strbuf_puts(renderer->buffer, "\\&."); - renderer->column += 3; + LIT("\\&."); } else { utf8proc_encode_char(c, renderer->buffer); renderer->column += 1; @@ -37,44 +42,35 @@ void S_outc(cmark_renderer *renderer, break; case 39: if (renderer->begin_line) { - cmark_strbuf_puts(renderer->buffer, "\\&'"); - renderer->column += 3; + LIT("\\&'"); } else { utf8proc_encode_char(c, renderer->buffer); renderer->column += 1; } break; case 45: - cmark_strbuf_puts(renderer->buffer, "\\-"); - renderer->column += 2; + LIT("\\-"); break; case 92: - cmark_strbuf_puts(renderer->buffer, "\\e"); - renderer->column += 2; + LIT("\\e"); break; case 8216: // left single quote - cmark_strbuf_puts(renderer->buffer, "\\[oq]"); - renderer->column += 5; + LIT("\\[oq]"); break; case 8217: // right single quote - cmark_strbuf_puts(renderer->buffer, "\\[cq]"); - renderer->column += 5; + LIT("\\[cq]"); break; case 8220: // left double quote - cmark_strbuf_puts(renderer->buffer, "\\[lq]"); - renderer->column += 5; + LIT("\\[lq]"); break; case 8221: // right double quote - cmark_strbuf_puts(renderer->buffer, "\\[rq]"); - renderer->column += 5; + LIT("\\[rq]"); break; case 8212: // em dash - cmark_strbuf_puts(renderer->buffer, "\\[em]"); - renderer->column += 5; + LIT("\\[em]"); break; case 8211: // en dash - cmark_strbuf_puts(renderer->buffer, "\\[en]"); - renderer->column += 5; + LIT("\\[en]"); break; default: utf8proc_encode_char(c, renderer->buffer); |