From: Fletcher T. Penney Date: Sat, 1 Sep 2018 19:44:18 +0000 (-0400) Subject: UPDATED: Allow '\' to preserve line break in metadata. (Addresses #86) X-Git-Tag: 6.4.0^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=89d931563d9fd20cde5d982dcef5848e1c53c1f5;p=multimarkdown UPDATED: Allow '\' to preserve line break in metadata. (Addresses #86) --- diff --git a/Sources/libMultiMarkdown/html.c b/Sources/libMultiMarkdown/html.c index 2220f39..cf09490 100644 --- a/Sources/libMultiMarkdown/html.c +++ b/Sources/libMultiMarkdown/html.c @@ -113,6 +113,11 @@ void mmd_print_char_html(DString * out, char c, bool obfuscate) { print_const(">"); break; + case '\n': + case '\r': + print_const("
\n"); + break; + default: if (obfuscate && ((int) c == (((int) c) & 127))) { if (ran_num_next() % 2 == 0) { diff --git a/Sources/libMultiMarkdown/latex.c b/Sources/libMultiMarkdown/latex.c index 58f51d2..a3ef057 100644 --- a/Sources/libMultiMarkdown/latex.c +++ b/Sources/libMultiMarkdown/latex.c @@ -116,6 +116,10 @@ void mmd_print_char_latex(DString * out, char c) { print_const("\\textbar{}"); break; + case '\n': + case '\r': + print_char('\\'); + case '#': case '{': case '}': diff --git a/Sources/libMultiMarkdown/opendocument-content.c b/Sources/libMultiMarkdown/opendocument-content.c index 3702e8a..0e5dfe5 100644 --- a/Sources/libMultiMarkdown/opendocument-content.c +++ b/Sources/libMultiMarkdown/opendocument-content.c @@ -154,6 +154,11 @@ void mmd_print_char_opendocument(DString * out, char c) { print_const(">"); break; + case '\n': + case '\r': + print_const("\n"); + break; + case '\t': print_const(""); diff --git a/Sources/libMultiMarkdown/writer.c b/Sources/libMultiMarkdown/writer.c index 4138af4..d8f4742 100644 --- a/Sources/libMultiMarkdown/writer.c +++ b/Sources/libMultiMarkdown/writer.c @@ -477,6 +477,22 @@ char * clean_string(const char * str, bool lowercase) { while (*str != '\0') { switch (*str) { + case '\\': + switch (*(str + 1)) { + case '\n': + case '\r': + d_string_append_c(out, '\n'); + block_whitespace = true; + break; + + default: + d_string_append_c(out, '\\'); + block_whitespace = false; + break; + } + + break; + case '\t': case ' ': case '\n': diff --git a/tests/MMD6Tests/Metadata.fodt b/tests/MMD6Tests/Metadata.fodt index 6661eb2..d0a51ec 100644 --- a/tests/MMD6Tests/Metadata.fodt +++ b/tests/MMD6Tests/Metadata.fodt @@ -277,6 +277,8 @@ office:mimetype="application/vnd.oasis.opendocument.text"> *foo* "bar" bar foo bar foo bar + first line +second line diff --git a/tests/MMD6Tests/Metadata.html b/tests/MMD6Tests/Metadata.html index 662202a..d57906e 100644 --- a/tests/MMD6Tests/Metadata.html +++ b/tests/MMD6Tests/Metadata.html @@ -7,6 +7,8 @@ + diff --git a/tests/MMD6Tests/Metadata.htmlc b/tests/MMD6Tests/Metadata.htmlc index 359f5fb..34f1325 100644 --- a/tests/MMD6Tests/Metadata.htmlc +++ b/tests/MMD6Tests/Metadata.htmlc @@ -13,7 +13,9 @@ foo bar foo: bar htmlheader level: 2 latexheader level: 2 -baseheader level: 3

+baseheader level: 3 +multiline: first line
+second line

foo: bar

diff --git a/tests/MMD6Tests/Metadata.opml b/tests/MMD6Tests/Metadata.opml index 17cd67a..8d656f7 100644 --- a/tests/MMD6Tests/Metadata.opml +++ b/tests/MMD6Tests/Metadata.opml @@ -16,6 +16,7 @@ + diff --git a/tests/MMD6Tests/Metadata.tex b/tests/MMD6Tests/Metadata.tex index 7998708..b22ef55 100644 --- a/tests/MMD6Tests/Metadata.tex +++ b/tests/MMD6Tests/Metadata.tex @@ -2,6 +2,8 @@ \def\mytitle{*foo* "bar"} \def\empty{} \def\foo{bar foo bar foo bar} +\def\multiline{first line\\ +second line} \input{mmd6-article-begin} foo: bar diff --git a/tests/MMD6Tests/Metadata.text b/tests/MMD6Tests/Metadata.text index 6f68a48..eca7d8c 100644 --- a/tests/MMD6Tests/Metadata.text +++ b/tests/MMD6Tests/Metadata.text @@ -14,6 +14,8 @@ foo: *bar* htmlheader level: 2 latexheader level: 2 baseheader level: 3 +multiline: first line\ + second line foo: bar