diff --git a/project.clj b/project.clj index dba11fb..7ae8b81 100644 --- a/project.clj +++ b/project.clj @@ -36,7 +36,8 @@ :bower-dependencies [[simplemde "1.11.2"] ;; [vega-embed "3.0.0-beta.19"] vega-embed currently not loaded from Bower because of ;; dependency conflict which will hopefully be resolved soon. - [vega-lite "2.0.0-beta.10"]] + [vega-lite "2.0.0-beta.10"] + [mermaid "6.0.0"]] :ring {:handler smeagol.handler/app :init smeagol.handler/init :destroy smeagol.handler/destroy} diff --git a/resources/public/content/Introduction.md b/resources/public/content/Introduction.md index 068a5f3..b72c49b 100644 --- a/resources/public/content/Introduction.md +++ b/resources/public/content/Introduction.md @@ -57,6 +57,33 @@ Note that this visualisation will not be rendered in the GitHub wiki, as it does  +## Now with embedded graphs + +Graphs can now be embedded in a page using the [Mermaid](http://knsv.github.io/mermaid/index.html) graph description language. The graph description should start with a line comprising three back-ticks and then the +word 'mermaid', and end with a line comprising just three backticks. + +Here's an example culled from the Mermaid documentation. + +### GANTT Chart + +```mermaid +gantt + dateFormat YYYY-MM-DD + title Adding GANTT diagram functionality to mermaid + section A section + Completed task :done, des1, 2014-01-06,2014-01-08 + Active task :active, des2, 2014-01-09, 3d + Future task : des3, after des2, 5d + Future task2 : des4, after des3, 5d + section Critical tasks + Completed task in the critical line :crit, done, 2014-01-06,24h + Implement parser and jison :crit, done, after des1, 2d + Create tests for parser :crit, active, 3d + Future task in critical line :crit, 5d + Create tests for renderer :2d + Add to mermaid :1d +``` + ## Advertisement If you like what you see here, I am available for work on open source Clojure projects. diff --git a/resources/templates/wiki.html b/resources/templates/wiki.html index 97d0228..e87096c 100644 --- a/resources/templates/wiki.html +++ b/resources/templates/wiki.html @@ -1,18 +1,24 @@ {% extends "templates/base.html" %} {% block extra-headers %} + - {% script "/vendor/vega-lite/build/vega-lite.js" %} - + + + {% style "vendor/mermaid/dist/mermaid.css" %} + {% script "vendor/mermaid/dist/mermaid.js" %} {% endblock %} {% block content %} @@ -25,4 +31,14 @@ package for vega-embed, so we're currently not installing either it or Vega loca {% endif %} {{content|safe}} + + {% endblock %} diff --git a/src/smeagol/formatting.clj b/src/smeagol/formatting.clj index 8acd922..e245749 100644 --- a/src/smeagol/formatting.clj +++ b/src/smeagol/formatting.clj @@ -73,6 +73,12 @@ (assoc (yaml/parse-string yaml-src) (keyword "$schema") "https://vega.github.io/schema/vega-lite/v2.json")) ";\nvega.embed('#vis" index "', vl" index ");\n//]]\n")) +(defn process-mermaid + "Lightly mung the mermaid specification." + [^String graph-spec ^Integer index] + (str "