From: Fletcher T. Penney Date: Wed, 31 May 2017 02:31:19 +0000 (-0400) Subject: FIXED: Improve handling of HTML entities (fixed #71) X-Git-Tag: 6.1.0^2~27 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4ad3cb29500c99559918f8171c2c2498b56eb829;p=multimarkdown FIXED: Improve handling of HTML entities (fixed #71) --- diff --git a/Sources/libMultiMarkdown/html.c b/Sources/libMultiMarkdown/html.c index f33ee8f..bc6355a 100644 --- a/Sources/libMultiMarkdown/html.c +++ b/Sources/libMultiMarkdown/html.c @@ -945,6 +945,9 @@ void mmd_export_token_html(DString * out, const char * source, token * t, scratc case HASH6: print_token(t); break; + case HTML_ENTITY: + print_token(t); + break; case HTML_COMMENT_START: if (!(scratch->extensions & EXT_SMART)) { print_const("<!--"); @@ -1715,6 +1718,10 @@ void mmd_export_token_html_raw(DString * out, const char * source, token * t, sc print_const("\\"); mmd_print_char_html(out, source[t->start + 1], false); break; + case HTML_ENTITY: + print_const("&"); + d_string_append_c_array(out, &(source[t->start + 1]), t->len - 1); + break; case MATH_BRACKET_OPEN: print_const("\\["); break; diff --git a/Sources/libMultiMarkdown/include/libMultiMarkdown.h b/Sources/libMultiMarkdown/include/libMultiMarkdown.h index d74282c..4d9f832 100644 --- a/Sources/libMultiMarkdown/include/libMultiMarkdown.h +++ b/Sources/libMultiMarkdown/include/libMultiMarkdown.h @@ -396,6 +396,7 @@ enum token_types { ESCAPED_CHARACTER, + HTML_ENTITY, HTML_COMMENT_START, HTML_COMMENT_STOP, PAIR_HTML_COMMENT, diff --git a/Sources/libMultiMarkdown/latex.c b/Sources/libMultiMarkdown/latex.c index b1d7557..afcec2d 100644 --- a/Sources/libMultiMarkdown/latex.c +++ b/Sources/libMultiMarkdown/latex.c @@ -877,6 +877,15 @@ void mmd_export_token_latex(DString * out, const char * source, token * t, scrat } } break; + case HTML_ENTITY: + if (source[t->start + 1] == '#') { + print_const("\\&\\#"); + d_string_append_c_array(out, &(source[t->start + 2]), t->len - 2); + } else { + print_const("\\"); + print_token(t); + } + break; case HTML_COMMENT_START: if (!(scratch->extensions & EXT_SMART)) { print_const("