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