From de7ea32104ad926ca62de671a7b4ddd18ca5e592 Mon Sep 17 00:00:00 2001 From: Le Tan Date: Fri, 16 Mar 2018 21:38:45 +0800 Subject: [PATCH] flowchart: support both flow and flowchart as the language --- src/resources/hoedown.js | 4 +++- src/resources/markdown-it.js | 7 ++----- src/resources/markdown_template.js | 19 +++++++++++++++++-- src/resources/marked.js | 7 ++----- src/resources/showdown.js | 6 ++++-- 5 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/resources/hoedown.js b/src/resources/hoedown.js index a1f500cb..9c91e0b1 100644 --- a/src/resources/hoedown.js +++ b/src/resources/hoedown.js @@ -32,7 +32,9 @@ var updateHtml = function(html) { --i; continue; } - } else if (VEnableFlowchart && code.classList.contains('language-flowchart')) { + } else if (VEnableFlowchart + && (code.classList.contains('language-flowchart') + || code.classList.contains('language-flow'))) { // Flowchart code block. if (renderFlowchartOne(code)) { // replaceChild() will decrease codes.length. diff --git a/src/resources/markdown-it.js b/src/resources/markdown-it.js index 93d33770..29b5f756 100644 --- a/src/resources/markdown-it.js +++ b/src/resources/markdown-it.js @@ -44,10 +44,7 @@ var mdit = window.markdownit({ typographer: true, langPrefix: 'lang-', highlight: function(str, lang) { - if (lang - && (!VEnableMathjax || lang != 'mathjax') - && (!VEnableMermaid || lang != 'mermaid') - && (!VEnableFlowchart || lang != 'flowchart')) { + if (lang && !specialCodeBlock(lang)) { if (hljs.getLanguage(lang)) { return hljs.highlight(lang, str, true).value; } else { @@ -110,7 +107,7 @@ var updateText = function(text) { handleToc(needToc); insertImageCaption(); renderMermaid('lang-mermaid'); - renderFlowchart('lang-flowchart'); + renderFlowchart(['lang-flowchart', 'lang-flow']); addClassToCodeBlock(); renderCodeBlockLineNumber(); diff --git a/src/resources/markdown_template.js b/src/resources/markdown_template.js index dd5fc760..88578f07 100644 --- a/src/resources/markdown_template.js +++ b/src/resources/markdown_template.js @@ -543,7 +543,7 @@ var renderMermaidOne = function(code) { var flowchartIdx = 0; // @className, the class name of the flowchart code block, such as 'lang-flowchart'. -var renderFlowchart = function(className) { +var renderFlowchart = function(classNames) { if (!VEnableFlowchart) { return; } @@ -552,7 +552,15 @@ var renderFlowchart = function(className) { flowchartIdx = 0; for (var i = 0; i < codes.length; ++i) { var code = codes[i]; - if (code.classList.contains(className)) { + var matched = false; + for (var j = 0; j < classNames.length; ++j) { + if (code.classList.contains(classNames[j])) { + matched = true; + break; + } + } + + if (matched) { if (renderFlowchartOne(code, flowchartIdx)) { // replaceChild() will decrease codes.length. --i; @@ -1157,3 +1165,10 @@ var calculateWordCount = function() { content.updateWordCountInfo(wc, cns, cc); }; + +// Whether it is a special code block, such as MathJax, Mermaid, or Flowchart. +var specialCodeBlock = function(lang) { + return (VEnableMathjax && lang == 'mathjax') + || (VEnableMermaid && lang == 'mermaid') + || (VEnableFlowchart && (lang == 'flowchart' || lang == 'flow')); +}; diff --git a/src/resources/marked.js b/src/resources/marked.js index 9d7a150a..78a583f5 100644 --- a/src/resources/marked.js +++ b/src/resources/marked.js @@ -17,10 +17,7 @@ renderer.heading = function(text, level) { // Highlight.js to highlight code block marked.setOptions({ highlight: function(code, lang) { - if (lang - && (!VEnableMathjax || lang != 'mathjax') - && (!VEnableMermaid || lang != 'mermaid') - && (!VEnableFlowchart || lang != 'flowchart')) { + if (lang && !specialCodeBlock(lang)) { if (hljs.getLanguage(lang)) { return hljs.highlight(lang, code, true).value; } else { @@ -59,7 +56,7 @@ var updateText = function(text) { handleToc(needToc); insertImageCaption(); renderMermaid('lang-mermaid'); - renderFlowchart('lang-flowchart'); + renderFlowchart(['lang-flowchart', 'lang-flow']); addClassToCodeBlock(); renderCodeBlockLineNumber(); diff --git a/src/resources/showdown.js b/src/resources/showdown.js index 4e8f4578..86dd3dde 100644 --- a/src/resources/showdown.js +++ b/src/resources/showdown.js @@ -57,7 +57,9 @@ var highlightCodeBlocks = function(doc, enableMermaid, enableFlowchart, enableMa if (enableMermaid && code.classList.contains('language-mermaid')) { // Mermaid code block. continue; - } else if (enableFlowchart && code.classList.contains('language-flowchart')) { + } else if (enableFlowchart + && (code.classList.contains('language-flowchart') + || code.classList.contains('language-flow'))) { // Flowchart code block. continue; } else if (enableMathJax && code.classList.contains('language-mathjax')) { @@ -84,7 +86,7 @@ var updateText = function(text) { insertImageCaption(); highlightCodeBlocks(document, VEnableMermaid, VEnableFlowchart, VEnableMathjax); renderMermaid('language-mermaid'); - renderFlowchart('language-flowchart'); + renderFlowchart(['language-flowchart', 'language-flow']); addClassToCodeBlock(); renderCodeBlockLineNumber();