From 54c3810070acf0d6a1e437ba38f8bd7f25b0756c Mon Sep 17 00:00:00 2001 From: troy351 <914053923@qq.com> Date: Fri, 18 Sep 2020 15:27:25 +0800 Subject: [PATCH 1/5] chore: update prismjs to 1.21.0 --- packages/@vuepress/markdown/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuepress/markdown/package.json b/packages/@vuepress/markdown/package.json index 28f80de928..fc82048a5e 100644 --- a/packages/@vuepress/markdown/package.json +++ b/packages/@vuepress/markdown/package.json @@ -28,7 +28,7 @@ "markdown-it-chain": "^1.3.0", "markdown-it-emoji": "^1.4.0", "markdown-it-table-of-contents": "^0.4.0", - "prismjs": "^1.13.0" + "prismjs": "^1.21.0" }, "publishConfig": { "access": "public" From e47fd3bf31b380066966f4b2e3fc5e73263d4d4f Mon Sep 17 00:00:00 2001 From: troy351 <914053923@qq.com> Date: Sat, 19 Sep 2020 20:00:51 +0800 Subject: [PATCH 2/5] feat($code-highlight): add doc highlight --- packages/@vuepress/markdown/lib/highlight.js | 24 +++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/@vuepress/markdown/lib/highlight.js b/packages/@vuepress/markdown/lib/highlight.js index af57356330..25147dbe22 100644 --- a/packages/@vuepress/markdown/lib/highlight.js +++ b/packages/@vuepress/markdown/lib/highlight.js @@ -18,18 +18,36 @@ function getLangCodeFromExtension (extension) { html: 'markup', md: 'markdown', rb: 'ruby', + js: 'javascript', ts: 'typescript', py: 'python', sh: 'bash', yml: 'yaml', styl: 'stylus', kt: 'kotlin', - rs: 'rust' + rs: 'rust', + cs: 'csharp', + fs: 'fsharp' } return extensionMap[extension] || extension } +function getDocLangCodeFromLang(lang) { + const docMap = { + 'javascript': 'jsdoc', + 'typescript': 'jsdoc', + 'markup': 'jsdoc', + 'java': 'javadoc', + 'php': 'phpdoc', + 'csharp': 'xml-doc', + 'fsharp': 'xml-doc', + 'vbnet': 'xml-doc' + } + + return docMap[lang] +} + module.exports = (str, lang) => { if (!lang) { return wrap(str, 'text') @@ -46,6 +64,10 @@ module.exports = (str, lang) => { logger.warn(chalk.yellow(`[vuepress] Syntax highlight for language "${lang}" is not supported.`)) } } + + const docLang = getDocLangCodeFromLang(lang) + if (docLang && !prism.languages[docLang]) loadLanguages([docLang]) + if (prism.languages[lang]) { const code = prism.highlight(str, prism.languages[lang], lang) return wrap(code, rawLang) From 53957d0ac67f2938336f46e5a8f18fbbd7bdfcd5 Mon Sep 17 00:00:00 2001 From: troy351 <914053923@qq.com> Date: Sat, 19 Sep 2020 20:44:14 +0800 Subject: [PATCH 3/5] code-highlight: fixed test error --- packages/@vuepress/markdown/lib/highlight.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vuepress/markdown/lib/highlight.js b/packages/@vuepress/markdown/lib/highlight.js index 25147dbe22..be7e259d3c 100644 --- a/packages/@vuepress/markdown/lib/highlight.js +++ b/packages/@vuepress/markdown/lib/highlight.js @@ -18,7 +18,6 @@ function getLangCodeFromExtension (extension) { html: 'markup', md: 'markdown', rb: 'ruby', - js: 'javascript', ts: 'typescript', py: 'python', sh: 'bash', @@ -35,6 +34,7 @@ function getLangCodeFromExtension (extension) { function getDocLangCodeFromLang(lang) { const docMap = { + 'js': 'jsdoc', 'javascript': 'jsdoc', 'typescript': 'jsdoc', 'markup': 'jsdoc', From 3451ec8039c67e300aea87aa31728f3acee49ae5 Mon Sep 17 00:00:00 2001 From: troy351 <914053923@qq.com> Date: Sat, 19 Sep 2020 21:11:47 +0800 Subject: [PATCH 4/5] fix test error --- packages/@vuepress/markdown/lib/highlight.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/@vuepress/markdown/lib/highlight.js b/packages/@vuepress/markdown/lib/highlight.js index be7e259d3c..48c474811a 100644 --- a/packages/@vuepress/markdown/lib/highlight.js +++ b/packages/@vuepress/markdown/lib/highlight.js @@ -66,7 +66,13 @@ module.exports = (str, lang) => { } const docLang = getDocLangCodeFromLang(lang) - if (docLang && !prism.languages[docLang]) loadLanguages([docLang]) + if (docLang && !prism.languages[docLang]) { + try { + loadLanguages([docLang]) + } catch (e) { + logger.warn(chalk.yellow(`[vuepress] Syntax highlight for language "${docLang}" is not supported.`)) + } + } if (prism.languages[lang]) { const code = prism.highlight(str, prism.languages[lang], lang) From 18c98562cb74a65889ac2840787d7deb3c1b25e7 Mon Sep 17 00:00:00 2001 From: troy351 <914053923@qq.com> Date: Sat, 19 Sep 2020 21:17:10 +0800 Subject: [PATCH 5/5] fixed lint error --- packages/@vuepress/markdown/lib/highlight.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/@vuepress/markdown/lib/highlight.js b/packages/@vuepress/markdown/lib/highlight.js index 48c474811a..fb32ce3251 100644 --- a/packages/@vuepress/markdown/lib/highlight.js +++ b/packages/@vuepress/markdown/lib/highlight.js @@ -32,7 +32,7 @@ function getLangCodeFromExtension (extension) { return extensionMap[extension] || extension } -function getDocLangCodeFromLang(lang) { +function getDocLangCodeFromLang (lang) { const docMap = { 'js': 'jsdoc', 'javascript': 'jsdoc', @@ -64,7 +64,7 @@ module.exports = (str, lang) => { logger.warn(chalk.yellow(`[vuepress] Syntax highlight for language "${lang}" is not supported.`)) } } - + const docLang = getDocLangCodeFromLang(lang) if (docLang && !prism.languages[docLang]) { try { @@ -73,7 +73,7 @@ module.exports = (str, lang) => { logger.warn(chalk.yellow(`[vuepress] Syntax highlight for language "${docLang}" is not supported.`)) } } - + if (prism.languages[lang]) { const code = prism.highlight(str, prism.languages[lang], lang) return wrap(code, rawLang)