From ab038b1f311103dc1407f5b14e87e758e3cf6bc2 Mon Sep 17 00:00:00 2001
From: ozone <802146+o-3@users.noreply.github.com>
Date: Fri, 4 May 2018 00:44:22 -0400
Subject: [PATCH] Add configuration to render line breaks as
or not
---
browser/components/MarkdownEditor.js | 1 +
browser/components/MarkdownPreview.js | 12 ++++++++----
browser/components/MarkdownSplitEditor.js | 1 +
browser/lib/markdown.js | 2 +-
browser/main/lib/ConfigManager.js | 1 +
browser/main/modals/PreferencesModal/UiTab.js | 11 +++++++++++
tests/fixtures/markdowns.js | 5 ++++-
tests/lib/markdown-test.js | 9 +++++++++
tests/lib/snapshots/markdown-test.js.md | 14 ++++++++++++++
tests/lib/snapshots/markdown-test.js.snap | Bin 1665 -> 3060 bytes
10 files changed, 50 insertions(+), 6 deletions(-)
diff --git a/browser/components/MarkdownEditor.js b/browser/components/MarkdownEditor.js
index 2c98f18e..2bd5d951 100644
--- a/browser/components/MarkdownEditor.js
+++ b/browser/components/MarkdownEditor.js
@@ -283,6 +283,7 @@ class MarkdownEditor extends React.Component {
indentSize={editorIndentSize}
scrollPastEnd={config.preview.scrollPastEnd}
smartQuotes={config.preview.smartQuotes}
+ breaks={config.preview.breaks}
sanitize={config.preview.sanitize}
ref='preview'
onContextMenu={(e) => this.handleContextMenu(e)}
diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js
index 058dce19..9d457238 100755
--- a/browser/components/MarkdownPreview.js
+++ b/browser/components/MarkdownPreview.js
@@ -145,10 +145,11 @@ export default class MarkdownPreview extends React.Component {
}
initMarkdown () {
- const { smartQuotes, sanitize } = this.props
+ const { smartQuotes, sanitize, breaks } = this.props
this.markdown = new Markdown({
typographer: smartQuotes,
- sanitize
+ sanitize,
+ breaks
})
}
@@ -340,7 +341,9 @@ export default class MarkdownPreview extends React.Component {
componentDidUpdate (prevProps) {
if (prevProps.value !== this.props.value) this.rewriteIframe()
- if (prevProps.smartQuotes !== this.props.smartQuotes || prevProps.sanitize !== this.props.sanitize) {
+ if (prevProps.smartQuotes !== this.props.smartQuotes ||
+ prevProps.sanitize !== this.props.sanitize ||
+ prevProps.breaks !== this.props.breaks) {
this.initMarkdown()
this.rewriteIframe()
}
@@ -599,5 +602,6 @@ MarkdownPreview.propTypes = {
value: PropTypes.string,
showCopyNotification: PropTypes.bool,
storagePath: PropTypes.string,
- smartQuotes: PropTypes.bool
+ smartQuotes: PropTypes.bool,
+ breaks: PropTypes.bool
}
diff --git a/browser/components/MarkdownSplitEditor.js b/browser/components/MarkdownSplitEditor.js
index 27505a5a..2bee5c24 100644
--- a/browser/components/MarkdownSplitEditor.js
+++ b/browser/components/MarkdownSplitEditor.js
@@ -131,6 +131,7 @@ class MarkdownSplitEditor extends React.Component {
lineNumber={config.preview.lineNumber}
scrollPastEnd={config.preview.scrollPastEnd}
smartQuotes={config.preview.smartQuotes}
+ breaks={config.preview.breaks}
sanitize={config.preview.sanitize}
ref='preview'
tabInde='0'
diff --git a/browser/lib/markdown.js b/browser/lib/markdown.js
index 1ef488a7..e5923790 100644
--- a/browser/lib/markdown.js
+++ b/browser/lib/markdown.js
@@ -25,7 +25,7 @@ class Markdown {
linkify: true,
html: true,
xhtmlOut: true,
- breaks: true,
+ breaks: config.preview.breaks,
highlight: function (str, lang) {
const delimiter = ':'
const langInfo = lang.split(delimiter)
diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js
index ee8a57c7..166e7181 100644
--- a/browser/main/lib/ConfigManager.js
+++ b/browser/main/lib/ConfigManager.js
@@ -55,6 +55,7 @@ export const DEFAULT_CONFIG = {
latexBlockClose: '$$',
scrollPastEnd: false,
smartQuotes: true,
+ breaks: true,
sanitize: 'STRICT' // 'STRICT', 'ALLOW_STYLES', 'NONE'
},
blog: {
diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js
index a607f548..42f1503c 100644
--- a/browser/main/modals/PreferencesModal/UiTab.js
+++ b/browser/main/modals/PreferencesModal/UiTab.js
@@ -96,6 +96,7 @@ class UiTab extends React.Component {
latexBlockClose: this.refs.previewLatexBlockClose.value,
scrollPastEnd: this.refs.previewScrollPastEnd.checked,
smartQuotes: this.refs.previewSmartQuotes.checked,
+ breaks: this.refs.previewBreaks.checked,
sanitize: this.refs.previewSanitize.value
}
}
@@ -475,6 +476,16 @@ class UiTab extends React.Component {
Enable smart quotes
+
This is a "QUOTE".
␊ + + +## Markdown.render() should render line breaks correctly + +> Snapshot 1 + + `This is the first line.
␊
+ This is the second line.
This is the first line.␊ + This is the second line.
␊ + ` \ No newline at end of file diff --git a/tests/lib/snapshots/markdown-test.js.snap b/tests/lib/snapshots/markdown-test.js.snap index 71ff221d9f61036d05dda745e42bdb820e08eda5..1dc64bba756effea535593a01693be463c95a26a 100644 GIT binary patch literal 3060 zcmZ8jTT@e46b^z71V%0aBm@YAt0=c{Q6LCGAPE;y10<1)2DwC#Yc7ZoV@KPW&gesZ zw6=CSbz0kL`_N7woN;{6b{u@rGVM&A4&y^RZJ*k|(C=fNo~X{Z*80}o=bY@l*0(p> zMr?(yMc;D3zZ5JC*XiOk=Dgu$`>-i>@!y9JW?+Y!D$-4eiJIMidQf*CTwZq${P^Q* z6@F%`2S-P2Aa9_oUIw1rdVB-y&-ZRRLW3Y-Sa1z)WEgG=HVI2lFvY$Rzf^DxW928| z1h$k!v$^y5C1ftE4DoHCl|K{VLdvx=0w3Ls(P{(uikgEgND_Ny`!2UB*g!~utw-T} z3FSvyHeS91S~JEOAQ0f<^CW?9GQ#cLf#VxzV1oTMDh1&~z`pZvscX5C!Sfw6?6Nun zaul`-t7(O6fT`d<&hdF*0yZZUev!`tk8Z(5g!7|57{8?=nN5iB8^JlQW;*I|b<1pq z1o$$QRe_C5c348j+*x(D2aIy*?=prEjwD&LGx{v^pmjyX%15S#N(@`~Fa%t9Eg<2` ztGfF96Np?5FkiC$F@mmcsmXH?q=#B8ruudrqQLJ&EXk6jE1wylU4qk%z$vQ?r0hfD zr=UWC3$q9b`EbC~``!b>9LtDY$|)G-NQs<=b;3$5E6zAX!1?#hciY@!l;QK+9)4Hb zFEe8ZN{