|
1 | 1 | /* eslint-env browser, jquery */ |
2 | | -/* global moment, serverurl */ |
| 2 | +/* global moment, serverurl, plantumlServer */ |
3 | 3 |
|
4 | 4 | import Prism from 'prismjs' |
5 | 5 | import hljs from 'highlight.js' |
@@ -31,6 +31,8 @@ require('prismjs/components/prism-gherkin') |
31 | 31 | require('./lib/common/login') |
32 | 32 | require('../vendor/md-toc') |
33 | 33 | var Viz = require('viz.js') |
| 34 | +const plantumlEncoder = require('plantuml-encoder') |
| 35 | + |
34 | 36 | const ui = getUIElements() |
35 | 37 |
|
36 | 38 | // auto update last change |
@@ -1036,6 +1038,33 @@ md.renderer.rules.fence = (tokens, idx, options, env, self) => { |
1036 | 1038 | return `<pre><code${self.renderAttrs(token)}>${highlighted}</code></pre>\n` |
1037 | 1039 | } |
1038 | 1040 |
|
| 1041 | +const makePlantumlURL = (umlCode) => { |
| 1042 | + let format = 'svg' |
| 1043 | + let code = plantumlEncoder.encode(umlCode) |
| 1044 | + return `${plantumlServer}/${format}/${code}` |
| 1045 | +} |
| 1046 | + |
| 1047 | +// https://github.com/qjebbs/vscode-plantuml/tree/master/src/markdown-it-plantuml |
| 1048 | +md.renderer.rules.plantuml = (tokens, idx) => { |
| 1049 | + let token = tokens[idx] |
| 1050 | + if (token.type !== 'plantuml') { |
| 1051 | + return tokens[idx].content |
| 1052 | + } |
| 1053 | + |
| 1054 | + let url = makePlantumlURL(token.content) |
| 1055 | + return `<img src="${url}" />` |
| 1056 | +} |
| 1057 | + |
| 1058 | +// https://github.com/qjebbs/vscode-plantuml/tree/master/src/markdown-it-plantuml |
| 1059 | +md.core.ruler.push('plantuml', (state) => { |
| 1060 | + let blockTokens = state.tokens |
| 1061 | + for (let blockToken of blockTokens) { |
| 1062 | + if (blockToken.type === 'fence' && blockToken.info === 'plantuml') { |
| 1063 | + blockToken.type = 'plantuml' |
| 1064 | + } |
| 1065 | + } |
| 1066 | +}) |
| 1067 | + |
1039 | 1068 | // youtube |
1040 | 1069 | const youtubePlugin = new Plugin( |
1041 | 1070 | // regexp to match |
|
0 commit comments