diff --git a/lib/config/default.js b/lib/config/default.js index 64113c43..1167cb75 100644 --- a/lib/config/default.js +++ b/lib/config/default.js @@ -164,6 +164,7 @@ module.exports = { allowGravatar: true, allowPDFExport: true, openID: false, + defaultUseHardbreak: true, // linkifyHeaderStyle - How is a header text converted into a link id. // Header Example: "3.1. Good Morning my Friend! - Do you have 5$?" // * 'keep-case' is the legacy CodiMD value. diff --git a/lib/config/environment.js b/lib/config/environment.js index 4defcac6..71b1b984 100644 --- a/lib/config/environment.js +++ b/lib/config/environment.js @@ -137,5 +137,6 @@ module.exports = { allowGravatar: toBooleanConfig(process.env.CMD_ALLOW_GRAVATAR), allowPDFExport: toBooleanConfig(process.env.CMD_ALLOW_PDF_EXPORT), openID: toBooleanConfig(process.env.CMD_OPENID), + defaultUseHardbreak: toBooleanConfig(process.env.CMD_DEFAULT_USE_HARD_BREAK), linkifyHeaderStyle: process.env.CMD_LINKIFY_HEADER_STYLE } diff --git a/lib/web/statusRouter.js b/lib/web/statusRouter.js index f1de7dbf..ae891ad6 100644 --- a/lib/web/statusRouter.js +++ b/lib/web/statusRouter.js @@ -100,6 +100,7 @@ statusRouter.get('/config', function (req, res) { plantumlServer: config.plantuml.server, DROPBOX_APP_KEY: config.dropbox.appKey, allowedUploadMimeTypes: config.allowedUploadMimeTypes, + defaultUseHardbreak: config.defaultUseHardbreak, linkifyHeaderStyle: config.linkifyHeaderStyle } res.set({ diff --git a/public/js/extra.js b/public/js/extra.js index 1282b801..356e8a49 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 } } @@ -1030,7 +1030,7 @@ function highlightRender (code, lang) { export const md = markdownit('default', { html: true, - breaks: true, + breaks: window.defaultUseHardbreak, langPrefix: '', linkify: true, typographer: true, diff --git a/public/js/lib/common/constant.ejs b/public/js/lib/common/constant.ejs index 057c92c8..537985f4 100644 --- a/public/js/lib/common/constant.ejs +++ b/public/js/lib/common/constant.ejs @@ -6,6 +6,8 @@ window.plantumlServer = '<%- plantumlServer %>' window.allowedUploadMimeTypes = <%- JSON.stringify(allowedUploadMimeTypes) %> +window.defaultUseHardbreak = <%- defaultUseHardbreak %> + window.linkifyHeaderStyle = '<%- linkifyHeaderStyle %>' window.DROPBOX_APP_KEY = '<%- DROPBOX_APP_KEY %>' 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() || {}