From 90f791de1bf852060aa3d31eeadab210c18ccf70 Mon Sep 17 00:00:00 2001 From: Baptiste Augrain Date: Sat, 8 Sep 2018 10:43:02 +0200 Subject: [PATCH] front-matter must be delimited by `---` --- browser/lib/findNoteTitle.js | 6 ++---- browser/lib/markdown-it-frontmatter.js | 21 +++++++++++++++++++++ browser/lib/markdown.js | 2 +- package.json | 1 - yarn.lock | 4 ---- 5 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 browser/lib/markdown-it-frontmatter.js diff --git a/browser/lib/findNoteTitle.js b/browser/lib/findNoteTitle.js index 25417d53..9dea7b1e 100644 --- a/browser/lib/findNoteTitle.js +++ b/browser/lib/findNoteTitle.js @@ -1,13 +1,11 @@ -const frontMatterRegex = /^\-{3,}/ - export function findNoteTitle (value) { const splitted = value.split('\n') let title = null let isInsideCodeBlock = false - if (frontMatterRegex.exec(splitted[0])) { + if (splitted[0] === '---') { let index = 0 - while (++index < splitted.length && !frontMatterRegex.exec(splitted[index])) { + while (++index < splitted.length && splitted[index] !== '---') { } splitted.splice(0, index + 1) diff --git a/browser/lib/markdown-it-frontmatter.js b/browser/lib/markdown-it-frontmatter.js new file mode 100644 index 00000000..051b0bba --- /dev/null +++ b/browser/lib/markdown-it-frontmatter.js @@ -0,0 +1,21 @@ +'use strict' + +module.exports = function frontMatterPlugin (md) { + function frontmatter (state, startLine, endLine, silent) { + if (startLine !== 0 || state.src.substr(startLine, state.eMarks[0]) !== '---') { + return false + } + + let line = 0 + while (++line < state.lineMax && state.src.substring(state.bMarks[line], state.eMarks[line]) !== '---') { + } + + state.line = line + 1 + + return true + } + + md.block.ruler.before('table', 'frontmatter', frontmatter, { + alt: [ 'paragraph', 'reference', 'blockquote', 'list' ] + }) +} diff --git a/browser/lib/markdown.js b/browser/lib/markdown.js index aeebc7ac..ba57ec6b 100644 --- a/browser/lib/markdown.js +++ b/browser/lib/markdown.js @@ -149,7 +149,7 @@ class Markdown { }) this.md.use(require('markdown-it-kbd')) this.md.use(require('markdown-it-admonition')) - this.md.use(require('markdown-it-front-matter'), fm => {}) + this.md.use(require('./markdown-it-frontmatter')) const deflate = require('markdown-it-plantuml/lib/deflate') this.md.use(require('markdown-it-plantuml'), '', { diff --git a/package.json b/package.json index 699db82b..c9e22164 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,6 @@ "markdown-it-admonition": "^1.0.4", "markdown-it-emoji": "^1.1.1", "markdown-it-footnote": "^3.0.0", - "markdown-it-front-matter": "^0.1.2", "markdown-it-imsize": "^2.0.1", "markdown-it-kbd": "^1.1.1", "markdown-it-multimd-table": "^2.0.1", diff --git a/yarn.lock b/yarn.lock index a4f682be..4ecfa51b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5735,10 +5735,6 @@ markdown-it-footnote@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/markdown-it-footnote/-/markdown-it-footnote-3.0.1.tgz#7f3730747cacc86e2fe0bf8a17a710f34791517a" -markdown-it-front-matter@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/markdown-it-front-matter/-/markdown-it-front-matter-0.1.2.tgz#e50bf56e77e6a4f5ac4ffa894d4d45ccd9896b20" - markdown-it-imsize@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/markdown-it-imsize/-/markdown-it-imsize-2.0.1.tgz#cca0427905d05338a247cb9ca9d968c5cddd5170"