Skip to content

Commit 3779016

Browse files
authored
Merge pull request #2846 from roottool/IntroduceMarkdownLint#864
Introduce markdownlint #864
2 parents 8cd24a5 + 03b1adc commit 3779016

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

browser/components/CodeEditor.js

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import TurndownService from 'turndown'
2525
import {languageMaps} from '../lib/CMLanguageList'
2626
import snippetManager from '../lib/SnippetManager'
2727
import {generateInEditor, tocExistsInEditor} from 'browser/lib/markdown-toc-generator'
28+
import markdownlint from 'markdownlint'
2829

2930
CodeMirror.modeURL = '../node_modules/codemirror/mode/%N/%N.js'
3031

@@ -37,6 +38,38 @@ function translateHotkey (hotkey) {
3738
return hotkey.replace(/\s*\+\s*/g, '-').replace(/Command/g, 'Cmd').replace(/Control/g, 'Ctrl')
3839
}
3940

41+
const validatorOfMarkdown = (text, updateLinting) => {
42+
const lintOptions = {
43+
'strings': {
44+
'content': text
45+
}
46+
}
47+
48+
return markdownlint(lintOptions, (err, result) => {
49+
if (!err) {
50+
const foundIssues = []
51+
result.content.map(item => {
52+
let ruleNames = ''
53+
item.ruleNames.map((ruleName, index) => {
54+
ruleNames += ruleName
55+
if (index === item.ruleNames.length - 1) {
56+
ruleNames += ': '
57+
} else {
58+
ruleNames += '/'
59+
}
60+
})
61+
foundIssues.push({
62+
from: CodeMirror.Pos(item.lineNumber, 0),
63+
to: CodeMirror.Pos(item.lineNumber, 1),
64+
message: ruleNames + item.ruleDescription,
65+
severity: 'warning'
66+
})
67+
})
68+
updateLinting(foundIssues)
69+
}
70+
})
71+
}
72+
4073
export default class CodeEditor extends React.Component {
4174
constructor (props) {
4275
super(props)
@@ -256,6 +289,7 @@ export default class CodeEditor extends React.Component {
256289
snippetManager.init()
257290
this.updateDefaultKeyMap()
258291

292+
const checkMarkdownNoteIsOpening = this.props.mode === 'Boost Flavored Markdown'
259293
this.value = this.props.value
260294
this.editor = CodeMirror(this.refs.root, {
261295
rulers: buildCMRulers(rulers, enableRulers),
@@ -272,7 +306,11 @@ export default class CodeEditor extends React.Component {
272306
inputStyle: 'textarea',
273307
dragDrop: false,
274308
foldGutter: true,
275-
gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'],
309+
lint: checkMarkdownNoteIsOpening ? {
310+
'getAnnotations': validatorOfMarkdown,
311+
'async': true
312+
} : false,
313+
gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter', 'CodeMirror-lint-markers'],
276314
autoCloseBrackets: {
277315
pairs: this.props.matchingPairs,
278316
triples: this.props.matchingTriples,

lib/main.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<link rel="stylesheet" href="../node_modules/codemirror/lib/codemirror.css">
1111
<link rel="stylesheet" href="../node_modules/katex/dist/katex.min.css">
1212
<link rel="stylesheet" href="../node_modules/codemirror/addon/dialog/dialog.css">
13+
<link rel="stylesheet" href="../node_modules/codemirror/addon/lint/lint.css">
1314
<link rel="stylesheet" href="../extra_scripts/codemirror/mode/bfm/bfm.css">
1415

1516
<title>Boostnote</title>
@@ -125,6 +126,8 @@
125126
<script src="../node_modules/codemirror/addon/dialog/dialog.js"></script>
126127
<script src="../node_modules/codemirror/addon/display/rulers.js"></script>
127128

129+
<script src="../node_modules/codemirror/addon/lint/lint.js"></script>
130+
128131
<script src="../node_modules/raphael/raphael.min.js"></script>
129132
<script src="../node_modules/flowchart.js/release/flowchart.min.js"></script>
130133
<script>
@@ -154,4 +157,4 @@
154157
</style>
155158
</body>
156159

157-
</html>
160+
</html>

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@
154154
"jest-localstorage-mock": "^2.2.0",
155155
"jsdom": "^9.4.2",
156156
"json-loader": "^0.5.4",
157+
"markdownlint": "^0.11.0",
157158
"merge-stream": "^1.0.0",
158159
"mock-require": "^3.0.1",
159160
"nib": "^1.1.0",

0 commit comments

Comments
 (0)