From b49d4e22616d7ac2a60db08dc69fdaf9b973cb04 Mon Sep 17 00:00:00 2001 From: Cheng-Han, Wu Date: Fri, 4 Mar 2016 23:26:27 +0800 Subject: Support mermaid in code block diagram and updated all diagram rendering method and styles --- public/js/extra.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 48 insertions(+), 8 deletions(-) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index 1752eb5b..dc3eac3e 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -220,11 +220,16 @@ function finishView(view) { var sequences = view.find(".sequence-diagram.raw").removeClass("raw"); sequences.each(function (key, value) { try { - var sequence = $(value); + var $value = $(value); + var $ele = $(value).parent().parent(); + + var sequence = $value; sequence.sequenceDiagram({ theme: 'simple' }); - sequence.parent().parent().replaceWith(sequence); + + $ele.addClass('sequence-diagram'); + $value.children().unwrap().unwrap(); } catch (err) { console.warn(err); } @@ -233,15 +238,20 @@ function finishView(view) { var flow = view.find(".flow-chart.raw").removeClass("raw"); flow.each(function (key, value) { try { - var chart = flowchart.parse($(value).text()); - $(value).html(''); + var $value = $(value); + var $ele = $(value).parent().parent(); + + var chart = flowchart.parse($value.text()); + $value.html(''); chart.drawSVG(value, { 'line-width': 2, 'fill': 'none', 'font-size': '16px', 'font-family': "'Andale Mono', monospace" }); - $(value).parent().parent().replaceWith(value); + + $ele.addClass('flow-chart'); + $value.children().unwrap().unwrap(); } catch (err) { console.warn(err); } @@ -250,9 +260,37 @@ function finishView(view) { var graphvizs = view.find(".graphviz.raw").removeClass("raw"); graphvizs.each(function (key, value) { try { - var graphviz = Viz($(value).text()); - $(value).html(graphviz); - $(value).parent().parent().replaceWith(value); + var $value = $(value); + var $ele = $(value).parent().parent(); + + var graphviz = Viz($value.text()); + $value.html(graphviz); + + $ele.addClass('graphviz'); + $value.children().unwrap().unwrap(); + } catch (err) { + console.warn(err); + } + }); + //mermaid + var mermaids = view.find(".mermaid.raw").removeClass("raw"); + mermaids.each(function (key, value) { + try { + var $value = $(value); + var $ele = $(value).parent().parent(); + + var mermaidError = null; + mermaid.parseError = function (err, hash) { + mermaidError = err; + }; + + if (mermaidAPI.parse($value.text())) { + $ele.addClass('mermaid'); + $ele.html($value.text()); + mermaid.init(undefined, $ele); + } else { + console.warn(mermaidError); + } } catch (err) { console.warn(err); } @@ -633,6 +671,8 @@ function highlightRender(code, lang) { return '
' + code + '
'; } else if (lang == 'graphviz') { return '
' + code + '
'; + } else if (lang == 'mermaid') { + return '
' + code + '
'; } var reallang = lang.replace(/\=$|\=\d+$|\=\+$/, ''); var languages = hljs.listLanguages(); -- cgit v1.2.3