From ac66332a4eb83d8829fbd6cc68a11ef3053c41de Mon Sep 17 00:00:00 2001
From: Henry Heino <46334387+personalizedrefrigerator@users.noreply.github.com>
Date: Tue, 18 Jul 2023 06:48:26 -0700
Subject: [PATCH] Desktop: Fixes #8430: Make HTML
tags convert to
markdown compatible with the softbreaks setting (#8469)
---
.../app-cli/tests/html_to_md/linebreaks.html | 10 +++++++++
.../app-cli/tests/html_to_md/linebreaks.md | 21 +++++++++++++++++++
packages/lib/HtmlToMd.ts | 7 ++++++-
packages/turndown/src/commonmark-rules.js | 5 ++++-
4 files changed, 41 insertions(+), 2 deletions(-)
create mode 100644 packages/app-cli/tests/html_to_md/linebreaks.html
create mode 100644 packages/app-cli/tests/html_to_md/linebreaks.md
diff --git a/packages/app-cli/tests/html_to_md/linebreaks.html b/packages/app-cli/tests/html_to_md/linebreaks.html
new file mode 100644
index 0000000000..c7a0ae1b88
--- /dev/null
+++ b/packages/app-cli/tests/html_to_md/linebreaks.html
@@ -0,0 +1,10 @@
+
Linebreaks
+<br>-style linebreaks should be replaced with two spaces followed by a
+ newline.
This allows the generated mark
down to render to equivalent HTML
+ even if the markdown.plugin.softbreaks
setting is enabled.
+<br>s shouldn't
lead
to trailing spaces in
+code
+however.
+
+Because it isn't
+necessary.
...
\ No newline at end of file
diff --git a/packages/app-cli/tests/html_to_md/linebreaks.md b/packages/app-cli/tests/html_to_md/linebreaks.md
new file mode 100644
index 0000000000..116e9d1cbe
--- /dev/null
+++ b/packages/app-cli/tests/html_to_md/linebreaks.md
@@ -0,0 +1,21 @@
+# Linebreaks
+
+<br>-style linebreaks should be replaced with two spaces followed by a newline.
+This allows the generated mark
+down to render to equivalent HTML even if the `markdown.plugin.softbreaks` setting is enabled.
+
+```
+
s shouldn't
+lead
+to trailing spaces in
+code
+however.
+```
+
+Because it isn't
+
+necessary.
+
+
+
+...
\ No newline at end of file
diff --git a/packages/lib/HtmlToMd.ts b/packages/lib/HtmlToMd.ts
index 0c7361aefe..c5d7f6c0ae 100644
--- a/packages/lib/HtmlToMd.ts
+++ b/packages/lib/HtmlToMd.ts
@@ -23,7 +23,12 @@ export default class HtmlToMd {
bulletListMarker: '-',
emDelimiter: '*',
strongDelimiter: '**',
- br: '',
+
+ // If soft-breaks are enabled, lines need to end with two or more spaces for
+ // trailing
s to render. See
+ // https://github.com/laurent22/joplin/issues/8430
+ br: ' ',
+
disableEscapeContent: 'disableEscapeContent' in options ? options.disableEscapeContent : false,
};
if (options.convertEmbeddedPdfsToLinks) {
diff --git a/packages/turndown/src/commonmark-rules.js b/packages/turndown/src/commonmark-rules.js
index 0f1cf0ef31..d6eb8e5608 100644
--- a/packages/turndown/src/commonmark-rules.js
+++ b/packages/turndown/src/commonmark-rules.js
@@ -33,7 +33,10 @@ rules.lineBreak = {
filter: 'br',
replacement: function (content, node, options) {
- return options.br + '\n'
+ // Code blocks may include
s -- replacing them should not be necessary
+ // in code blocks.
+ const brReplacement = node.isCode ? '' : options.br;
+ return brReplacement + '\n'
}
}