From 495b65e3b983603819e11371e43aecbd40ffe825 Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Sun, 20 Oct 2019 14:14:35 +0800 Subject: [PATCH 1/4] Add defaultUseHardbreak as constants Signed-off-by: Yukai Huang --- lib/config/default.js | 3 ++- lib/web/statusRouter.js | 3 ++- public/js/lib/common/constant.ejs | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/config/default.js b/lib/config/default.js index 93de2599..50bddac1 100644 --- a/lib/config/default.js +++ b/lib/config/default.js @@ -162,5 +162,6 @@ module.exports = { allowEmailRegister: true, allowGravatar: true, allowPDFExport: true, - openID: false + openID: false, + defaultUseHardbreak: true } diff --git a/lib/web/statusRouter.js b/lib/web/statusRouter.js index f8c1f6cf..0a456a03 100644 --- a/lib/web/statusRouter.js +++ b/lib/web/statusRouter.js @@ -99,7 +99,8 @@ statusRouter.get('/config', function (req, res) { version: config.fullversion, plantumlServer: config.plantuml.server, DROPBOX_APP_KEY: config.dropbox.appKey, - allowedUploadMimeTypes: config.allowedUploadMimeTypes + allowedUploadMimeTypes: config.allowedUploadMimeTypes, + defaultUseHardbreak: config.defaultUseHardbreak } res.set({ 'Cache-Control': 'private', // only cache by client diff --git a/public/js/lib/common/constant.ejs b/public/js/lib/common/constant.ejs index 7821329d..f75c4f87 100644 --- a/public/js/lib/common/constant.ejs +++ b/public/js/lib/common/constant.ejs @@ -6,4 +6,6 @@ window.plantumlServer = '<%- plantumlServer %>' window.allowedUploadMimeTypes = <%- JSON.stringify(allowedUploadMimeTypes) %> +window.defaultUseHardbreak = <%- defaultUseHardbreak %> + window.DROPBOX_APP_KEY = '<%- DROPBOX_APP_KEY %>' From fd155fa74dc613d22473b5f32ef94b6c3644f707 Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Sun, 20 Oct 2019 14:15:03 +0800 Subject: [PATCH 2/4] Use defaultUseHardbreak config when render Signed-off-by: Yukai Huang --- public/js/extra.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/js/extra.js b/public/js/extra.js index 03f04664..49f6f23d 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -195,7 +195,7 @@ export function isValidURL (str) { export function parseMeta (md, edit, view, toc, tocAffix) { let lang = null let dir = null - let breaks = true + let breaks = window.defaultUseHardbreak if (md && md.meta) { const meta = md.meta lang = meta.lang @@ -225,10 +225,10 @@ export function parseMeta (md, edit, view, toc, tocAffix) { tocAffix.removeAttr('dir') } // breaks - if (typeof breaks === 'boolean' && !breaks) { - md.options.breaks = false + if (typeof breaks === 'boolean') { + md.options.breaks = breaks } else { - md.options.breaks = true + md.options.breaks = window.defaultUseHardbreak } } @@ -979,7 +979,7 @@ function highlightRender (code, lang) { export const md = markdownit('default', { html: true, - breaks: true, + breaks: window.defaultUseHardbreak, langPrefix: '', linkify: true, typographer: true, From 56b669a0272fa6e5c323d70f17a104568b0dc3bf Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Sun, 20 Oct 2019 14:18:21 +0800 Subject: [PATCH 3/4] Fix meta break setting in slide mode When `RevealMarkdown.initialize` is called, it use `md.render` to render markdown, but no until we parse meta, the md.options.breaks would be default value we set in extra.js. So this commit move forward the whole meta parsing block. Ensure line break setting changed before `md.render` get called. Signed-off-by: Yukai Huang --- public/js/slide.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/public/js/slide.js b/public/js/slide.js index 9ba3da54..61546339 100644 --- a/public/js/slide.js +++ b/public/js/slide.js @@ -49,6 +49,15 @@ const deps = [{ } }] +// options from yaml meta +const meta = JSON.parse($('#meta').text()) +// breaks +if (typeof meta.breaks === 'boolean') { + md.options.breaks = meta.breaks +} else { + md.options.breaks = window.defaultUseHardbreak +} + const slideOptions = { separator: '^(\r\n?|\n)---(\r\n?|\n)$', verticalSeparator: '^(\r\n?|\n)----(\r\n?|\n)$' @@ -70,8 +79,6 @@ const defaultOptions = { dependencies: deps } -// options from yaml meta -const meta = JSON.parse($('#meta').text()) var options = meta.slideOptions || {} if (Object.hasOwnProperty.call(options, 'spotlight')) { @@ -103,12 +110,6 @@ if (meta.dir && typeof meta.dir === 'string' && meta.dir === 'rtl') { } else { options.rtl = false } -// breaks -if (typeof meta.breaks === 'boolean' && !meta.breaks) { - md.options.breaks = false -} else { - md.options.breaks = true -} // options from URL query string const queryOptions = Reveal.getQueryHash() || {} From 82b5e98f55242b18dab1dbab920060f0c4e66c6b Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Sun, 20 Oct 2019 14:32:06 +0800 Subject: [PATCH 4/4] Add defaultUseHardbreak environment variable Signed-off-by: Yukai Huang --- lib/config/environment.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/config/environment.js b/lib/config/environment.js index de573e18..6ea806c7 100644 --- a/lib/config/environment.js +++ b/lib/config/environment.js @@ -135,5 +135,6 @@ module.exports = { allowEmailRegister: toBooleanConfig(process.env.CMD_ALLOW_EMAIL_REGISTER), allowGravatar: toBooleanConfig(process.env.CMD_ALLOW_GRAVATAR), allowPDFExport: toBooleanConfig(process.env.CMD_ALLOW_PDF_EXPORT), - openID: toBooleanConfig(process.env.CMD_OPENID) + openID: toBooleanConfig(process.env.CMD_OPENID), + defaultUseHardbreak: toBooleanConfig(process.env.CMD_DEFAULT_USE_HARD_BREAK) }