From e393b5a2eafc352af0ee5b3793e46ba6feba6fc7 Mon Sep 17 00:00:00 2001 From: roottool Date: Tue, 29 Jan 2019 20:41:29 +0900 Subject: [PATCH 1/6] Add markdownlint #864 --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 62a0ced8..253623b0 100644 --- a/package.json +++ b/package.json @@ -154,6 +154,7 @@ "jest-localstorage-mock": "^2.2.0", "jsdom": "^9.4.2", "json-loader": "^0.5.4", + "markdownlint": "^0.11.0", "merge-stream": "^1.0.0", "mock-require": "^3.0.1", "nib": "^1.1.0", From 3a96164c276d2761041bf67575d35db3c54a54b2 Mon Sep 17 00:00:00 2001 From: roottool Date: Tue, 29 Jan 2019 20:42:24 +0900 Subject: [PATCH 2/6] display lint result on CodeEditor #864 --- browser/components/CodeEditor.js | 40 +++++++++++++++++++++++++++++++- lib/main.html | 6 ++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 48634993..7068ff02 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -117,6 +117,39 @@ const languageMaps = { elixir: 'Elixir' } +const validator = (text, updateLinting) => { + const markdownlint = require('markdownlint') + const lintOptions = { + 'strings': { + 'content': text + } + } + + return markdownlint(lintOptions, (err, result) => { + if (!err) { + const foundIssues = [] + result.content.map(item => { + let ruleNames = '' + item.ruleNames.map((ruleName, index) => { + ruleNames += ruleName + if (index === item.ruleNames.length - 1) { + ruleNames += ': ' + } else { + ruleNames += '/' + } + }) + foundIssues.push({ + from: CodeMirror.Pos(item.lineNumber, 0), + to: CodeMirror.Pos(item.lineNumber, 1), + message: ruleNames + item.ruleDescription, + severity: 'warning' + }) + }) + updateLinting(foundIssues) + } + }) +} + export default class CodeEditor extends React.Component { constructor (props) { super(props) @@ -344,7 +377,12 @@ export default class CodeEditor extends React.Component { inputStyle: 'textarea', dragDrop: false, foldGutter: true, - gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'], + lint: { + 'getAnnotations': validator, + 'async': true + }, + mode: 'markdown', + gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter', 'CodeMirror-lint-markers'], autoCloseBrackets: { pairs: this.props.matchingPairs, triples: this.props.matchingTriples, diff --git a/lib/main.html b/lib/main.html index a1ea3610..bc7504ad 100644 --- a/lib/main.html +++ b/lib/main.html @@ -10,6 +10,7 @@ + Boostnote @@ -125,6 +126,9 @@ + + + - From c15cc2ecfc80e079d6d941fe541789da4cf6c80c Mon Sep 17 00:00:00 2001 From: roottool Date: Sat, 2 Feb 2019 14:59:04 +0900 Subject: [PATCH 6/6] added to check Markdown Note is opening --- browser/components/CodeEditor.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index fb2f142f..54354efa 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -361,6 +361,7 @@ export default class CodeEditor extends React.Component { this.updateDefaultKeyMap() + const checkMarkdownNoteIsOpening = this.props.mode === 'Boost Flavored Markdown' this.value = this.props.value this.editor = CodeMirror(this.refs.root, { rulers: buildCMRulers(rulers, enableRulers), @@ -377,10 +378,10 @@ export default class CodeEditor extends React.Component { inputStyle: 'textarea', dragDrop: false, foldGutter: true, - lint: { + lint: checkMarkdownNoteIsOpening ? { 'getAnnotations': validatorOfMarkdown, 'async': true - }, + } : false, gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter', 'CodeMirror-lint-markers'], autoCloseBrackets: { pairs: this.props.matchingPairs,