@@ -31,6 +31,8 @@ require('prismjs/components/prism-gherkin')
3131require ( './lib/common/login' )
3232require ( '../vendor/md-toc' )
3333var Viz = require ( 'viz.js' )
34+ const plantumlEncoder = require ( 'plantuml-encoder' )
35+
3436const ui = getUIElements ( )
3537
3638// auto update last change
@@ -970,10 +972,6 @@ md.use(require('markdown-it-emoji'), {
970972 shortcuts : { }
971973} )
972974
973- md . use ( require ( 'markdown-it-plantuml' ) , {
974- server : plantumlServer
975- } )
976-
977975window . emojify . setConfig ( {
978976 blacklist : {
979977 elements : [ 'script' , 'textarea' , 'a' , 'pre' , 'code' , 'svg' ] ,
@@ -1040,6 +1038,33 @@ md.renderer.rules.fence = (tokens, idx, options, env, self) => {
10401038 return `<pre><code${ self . renderAttrs ( token ) } >${ highlighted } </code></pre>\n`
10411039}
10421040
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+
10431068// youtube
10441069const youtubePlugin = new Plugin (
10451070 // regexp to match
0 commit comments