Skip to content

Commit 3ffec6a

Browse files
author
TitanSnow
committed
use markdown-it to replace marked
1 parent c957258 commit 3ffec6a

File tree

7 files changed

+61
-138
lines changed

7 files changed

+61
-138
lines changed

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
"analyze": "cross-env NODE_ENV=development BUNDLE_ANALYZE=true webpack --progress --hide-modules"
1616
},
1717
"dependencies": {
18+
"@iktakahiro/markdown-it-katex": "^3.0.3",
1819
"babel-runtime": "^6.26.0",
19-
"escape-html": "^1.0.3",
2020
"font-awesome": "^4.7.0",
21-
"highlight.js": "^9.12.0",
22-
"katex": "^0.9.0-alpha2",
21+
"highlight.js": "^9.9.0",
22+
"katex": "^0.9.0",
2323
"lodash": "^4.17.4",
24-
"marked": "^0.3.12",
25-
"md5": "^2.2.1",
24+
"markdown-it": "^8.4.1",
25+
"markdown-it-highlightjs": "^3.0.0",
2626
"vue": "^2.5.11",
2727
"vue-codemirror-lite": "^1.0.3"
2828
},

src/components/ContentParserFactory.js

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,8 @@
11
import { MarkdownParser } from './plugin/MarkdownParser'
2-
import md5 from 'md5'
32

43
function contentParserFactory (parsers) {
54
return content => {
6-
let newContent = content
7-
const stringMap = []
8-
9-
parsers.forEach(function (parserConfig) {
10-
let matches = newContent.match(parserConfig.reg)
11-
12-
while (matches !== null) {
13-
const mapItem = {
14-
hash: md5(matches[0]),
15-
segment: matches[0],
16-
content: parserConfig.parser(matches)
17-
}
18-
newContent = newContent.replace(mapItem.segment, mapItem.hash)
19-
stringMap.push(mapItem)
20-
21-
matches = newContent.match(parserConfig.reg)
22-
}
23-
})
24-
25-
newContent = MarkdownParser(newContent, stringMap)
26-
27-
stringMap.forEach(function (mapItem) {
28-
newContent = newContent.replace(mapItem.hash, mapItem.content)
29-
})
30-
return newContent
5+
return MarkdownParser(content, parsers)
316
}
327
}
338

src/components/DefaultConfig.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
import KatexParser from './plugin/KatexParser'
1+
import KatexParser from '@iktakahiro/markdown-it-katex'
2+
import 'katex/dist/katex.css'
3+
import HighlightjsParser from 'markdown-it-highlightjs'
4+
import 'highlight.js/styles/tomorrow.css'
25
import { defaultBtns, getBtns } from './toolbar-button/toolbarBtn'
36
import _ from 'lodash'
47

@@ -16,7 +19,8 @@ export const defaultConfig = {
1619
previewDisplay: 'normal',
1720
fullScreen: false,
1821
parsers: [
19-
KatexParser
22+
KatexParser,
23+
HighlightjsParser
2024
],
2125
toolbarConfig: defaultBtns,
2226
editorOption: {

src/components/plugin/Highlight.js

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/components/plugin/KatexParser.js

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 6 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,9 @@
1-
import 'highlight.js/styles/tomorrow.css'
2-
import 'katex/dist/katex.css'
3-
import Highlight from './Highlight'
4-
import escapeHtml from 'escape-html'
5-
import katex from 'katex/dist/katex'
1+
import MarkdownIt from 'markdown-it'
62

7-
export function MarkdownParser (code, stringMap) {
8-
const marked = require('marked')
9-
10-
const renderer = new marked.Renderer()
11-
12-
renderer.heading = function (text, level) {
13-
return '<h' + level + '>' + text + '</h' + level + '>'
14-
}
15-
16-
const highlight = function (code) {
17-
return Highlight.highlightAuto(code).value
18-
}
19-
20-
renderer.code = function (code, lang) {
21-
stringMap.forEach(function (mapItem) {
22-
code = code.replace(mapItem.hash, mapItem.segment)
23-
})
24-
25-
if (lang === 'latex') {
26-
try {
27-
return katex.renderToString(code, {
28-
displayMode: true
29-
})
30-
} catch (exception) {
31-
return code
32-
}
33-
}
34-
35-
const out = highlight(code, lang)
36-
if (out !== null) {
37-
code = out
38-
}
39-
40-
if (!lang) {
41-
return '<pre><code class="mp-code ">' +
42-
code +
43-
'\n</code></pre>'
44-
}
45-
46-
return '<pre><code class="mp-code ' +
47-
'lang-' +
48-
escapeHtml(lang) +
49-
'">' +
50-
code +
51-
'\n</code></pre>\n'
52-
}
53-
54-
marked.setOptions({
55-
renderer: renderer,
56-
sanitize: true
3+
export function MarkdownParser (code, parsers) {
4+
var converter = MarkdownIt()
5+
parsers.forEach(parser => {
6+
converter = converter.use(parser)
577
})
58-
return marked(code)
8+
return converter.render(code)
599
}

yarn.lock

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,12 @@
9393
lodash "^4.17.5"
9494
to-fast-properties "^2.0.0"
9595

96+
"@iktakahiro/markdown-it-katex@^3.0.3":
97+
version "3.0.3"
98+
resolved "https://registry.yarnpkg.com/@iktakahiro/markdown-it-katex/-/markdown-it-katex-3.0.3.tgz#910287d8365c99ea857c9c45877bd97304296607"
99+
dependencies:
100+
katex "^0.9.0"
101+
96102
abbrev@1:
97103
version "1.1.1"
98104
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
@@ -1159,10 +1165,6 @@ chardet@^0.4.0:
11591165
version "0.4.2"
11601166
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
11611167

1162-
charenc@~0.0.1:
1163-
version "0.0.2"
1164-
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
1165-
11661168
check-types@^7.3.0:
11671169
version "7.4.0"
11681170
resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4"
@@ -1485,10 +1487,6 @@ cross-spawn@^6.0.5:
14851487
shebang-command "^1.2.0"
14861488
which "^1.2.9"
14871489

1488-
crypt@~0.0.1:
1489-
version "0.0.2"
1490-
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
1491-
14921490
crypto-browserify@^3.11.0:
14931491
version "3.12.0"
14941492
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@@ -1928,7 +1926,7 @@ es6-weak-map@^2.0.1:
19281926
es6-iterator "^2.0.1"
19291927
es6-symbol "^3.1.1"
19301928

1931-
escape-html@^1.0.3, escape-html@~1.0.3:
1929+
escape-html@~1.0.3:
19321930
version "1.0.3"
19331931
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
19341932

@@ -2611,7 +2609,7 @@ he@^1.1.0:
26112609
version "1.1.1"
26122610
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
26132611

2614-
highlight.js@^9.12.0:
2612+
highlight.js@^9.9.0:
26152613
version "9.12.0"
26162614
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e"
26172615

@@ -2860,7 +2858,7 @@ is-binary-path@^1.0.0:
28602858
dependencies:
28612859
binary-extensions "^1.0.0"
28622860

2863-
is-buffer@^1.1.5, is-buffer@~1.1.1:
2861+
is-buffer@^1.1.5:
28642862
version "1.1.6"
28652863
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
28662864

@@ -3138,7 +3136,7 @@ json5@^0.5.0, json5@^0.5.1:
31383136
version "0.5.1"
31393137
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
31403138

3141-
katex@^0.9.0-alpha2:
3139+
katex@^0.9.0:
31423140
version "0.9.0"
31433141
resolved "https://registry.yarnpkg.com/katex/-/katex-0.9.0.tgz#26a7d082c21d53725422d2d71da9b2d8455fbd4a"
31443142
dependencies:
@@ -3185,6 +3183,12 @@ levn@^0.3.0, levn@~0.3.0:
31853183
prelude-ls "~1.1.2"
31863184
type-check "~0.3.2"
31873185

3186+
linkify-it@^2.0.0:
3187+
version "2.0.3"
3188+
resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.0.3.tgz#d94a4648f9b1c179d64fa97291268bdb6ce9434f"
3189+
dependencies:
3190+
uc.micro "^1.0.1"
3191+
31883192
load-json-file@^1.0.0:
31893193
version "1.1.0"
31903194
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@@ -3237,6 +3241,10 @@ lodash.debounce@^4.0.8:
32373241
version "4.0.8"
32383242
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
32393243

3244+
lodash.flow@^3.1.0:
3245+
version "3.5.0"
3246+
resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a"
3247+
32403248
lodash.memoize@^4.1.2:
32413249
version "4.1.2"
32423250
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
@@ -3297,9 +3305,22 @@ map-visit@^1.0.0:
32973305
dependencies:
32983306
object-visit "^1.0.0"
32993307

3300-
marked@^0.3.12:
3301-
version "0.3.19"
3302-
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790"
3308+
markdown-it-highlightjs@^3.0.0:
3309+
version "3.0.0"
3310+
resolved "https://registry.yarnpkg.com/markdown-it-highlightjs/-/markdown-it-highlightjs-3.0.0.tgz#ed3dd619ca2b98e6bf2112d163bf444043340210"
3311+
dependencies:
3312+
highlight.js "^9.9.0"
3313+
lodash.flow "^3.1.0"
3314+
3315+
markdown-it@^8.4.1:
3316+
version "8.4.1"
3317+
resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.1.tgz#206fe59b0e4e1b78a7c73250af9b34a4ad0aaf44"
3318+
dependencies:
3319+
argparse "^1.0.7"
3320+
entities "~1.1.1"
3321+
linkify-it "^2.0.0"
3322+
mdurl "^1.0.1"
3323+
uc.micro "^1.0.5"
33033324

33043325
match-at@^0.1.1:
33053326
version "0.1.1"
@@ -3320,13 +3341,9 @@ md5.js@^1.3.4:
33203341
hash-base "^3.0.0"
33213342
inherits "^2.0.1"
33223343

3323-
md5@^2.2.1:
3324-
version "2.2.1"
3325-
resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9"
3326-
dependencies:
3327-
charenc "~0.0.1"
3328-
crypt "~0.0.1"
3329-
is-buffer "~1.1.1"
3344+
mdurl@^1.0.1:
3345+
version "1.0.1"
3346+
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
33303347

33313348
media-typer@0.3.0:
33323349
version "0.3.0"
@@ -5159,6 +5176,10 @@ typedarray@^0.0.6:
51595176
version "0.0.6"
51605177
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
51615178

5179+
uc.micro@^1.0.1, uc.micro@^1.0.5:
5180+
version "1.0.5"
5181+
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376"
5182+
51625183
uglify-js@^2.8.29:
51635184
version "2.8.29"
51645185
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"

0 commit comments

Comments
 (0)