From 26305f4eff1e2205c1259e82076295a575d7ca41 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sun, 12 Jul 2015 17:30:48 -0700 Subject: Use cmark_render_code_point in renderers. --- src/latex.c | 86 ++++++++++++++++++++++++++----------------------------------- 1 file changed, 36 insertions(+), 50 deletions(-) (limited to 'src/latex.c') diff --git a/src/latex.c b/src/latex.c index bf0c65e..592c40c 100644 --- a/src/latex.c +++ b/src/latex.c @@ -17,7 +17,6 @@ #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) static inline void outc(cmark_renderer *renderer, cmark_escaping escape, @@ -25,8 +24,7 @@ static inline void outc(cmark_renderer *renderer, unsigned char nextc) { if (escape == LITERAL) { - utf8proc_encode_char(c, renderer->buffer); - renderer->column += 1; + cmark_render_code_point(renderer, c); } else { switch(c) { case 123: // '{' @@ -34,129 +32,117 @@ static inline void outc(cmark_renderer *renderer, case 35: // '#' case 37: // '%' case 38: // '&' - ASCII("\\"); - utf8proc_encode_char(c, renderer->buffer); - renderer->column += 1; + cmark_render_ascii(renderer, "\\"); + cmark_render_code_point(renderer, c); break; case 36: // '$' case 95: // '_' if (escape == NORMAL) { - ASCII("\\"); + cmark_render_ascii(renderer, "\\"); } - utf8proc_encode_char(c, renderer->buffer); - renderer->column += 1; + cmark_render_code_point(renderer, c); break; case 45 : // '-' if (nextc == 45) { // prevent ligature - ASCII("\\-"); + cmark_render_ascii(renderer, "\\-"); } else { - ASCII("-"); + cmark_render_ascii(renderer, "-"); } break; case 126: // '~' if (escape == NORMAL) { - ASCII("\\textasciitilde{}"); + cmark_render_ascii(renderer, "\\textasciitilde{}"); } else { - utf8proc_encode_char(c, renderer->buffer); - renderer->column += 1; + cmark_render_code_point(renderer, c); } break; case 94: // '^' - ASCII("\\^{}"); + cmark_render_ascii(renderer, "\\^{}"); break; case 92: // '\\' if (escape == URL) { // / acts as path sep even on windows: - ASCII("/"); + cmark_render_ascii(renderer, "/"); } else { - ASCII("\\textbackslash{}"); + cmark_render_ascii(renderer, "\\textbackslash{}"); } break; case 124: // '|' - ASCII("\\textbar{}"); + cmark_render_ascii(renderer, "\\textbar{}"); break; case 60: // '<' - ASCII("\\textless{}"); + cmark_render_ascii(renderer, "\\textless{}"); break; case 62: // '>' - ASCII("\\textgreater{}"); + cmark_render_ascii(renderer, "\\textgreater{}"); break; case 91: // '[' case 93: // ']' - ASCII("{"); - utf8proc_encode_char(c, renderer->buffer); - renderer->column += 1; - ASCII("}"); + cmark_render_ascii(renderer, "{"); + cmark_render_code_point(renderer, c); + cmark_render_ascii(renderer, "}"); break; case 34: // '"' - ASCII("\\textquotedbl{}"); + cmark_render_ascii(renderer, "\\textquotedbl{}"); // requires \usepackage[T1]{fontenc} break; case 39: // '\'' - ASCII("\\textquotesingle{}"); + cmark_render_ascii(renderer, "\\textquotesingle{}"); // requires \usepackage{textcomp} break; case 160: // nbsp - ASCII("~"); - renderer->column += 1; + cmark_render_ascii(renderer, "~"); break; case 8230: // hellip - ASCII("\\ldots{}"); + cmark_render_ascii(renderer, "\\ldots{}"); break; case 8216: // lsquo if (escape == NORMAL) { - ASCII("`"); + cmark_render_ascii(renderer, "`"); } else { - utf8proc_encode_char(c, renderer->buffer); - renderer->column += 1; + cmark_render_code_point(renderer, c); } break; case 8217: // rsquo if (escape == NORMAL) { - ASCII("\'"); + cmark_render_ascii(renderer, "\'"); } else { - utf8proc_encode_char(c, renderer->buffer); - renderer->column += 1; + cmark_render_code_point(renderer, c); } break; case 8220: // ldquo if (escape == NORMAL) { - ASCII("``"); + cmark_render_ascii(renderer, "``"); } else { - utf8proc_encode_char(c, renderer->buffer); - renderer->column += 1; + cmark_render_code_point(renderer, c); } break; case 8221: // rdquo if (escape == NORMAL) { - ASCII("''"); + cmark_render_ascii(renderer, "''"); } else { - utf8proc_encode_char(c, renderer->buffer); - renderer->column += 1; + cmark_render_code_point(renderer, c); } break; case 8212: // emdash if (escape == NORMAL) { - ASCII("---"); + cmark_render_ascii(renderer, "---"); } else { - utf8proc_encode_char(c, renderer->buffer); - renderer->column += 1; + cmark_render_code_point(renderer, c); } break; case 8211: // endash if (escape == NORMAL) { - ASCII("--"); + cmark_render_ascii(renderer, "--"); } else { - utf8proc_encode_char(c, renderer->buffer); - renderer->column += 1; + cmark_render_code_point(renderer, c); } break; default: - utf8proc_encode_char(c, renderer->buffer); - renderer->column += 1; - renderer->begin_line = false; + cmark_render_code_point(renderer, c); } } + renderer->begin_line = (c == 10); } typedef enum { -- cgit v1.2.3