diff --git a/package.json b/package.json index 40d19771..eea28c61 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,6 @@ "markdown-it-ins": "~2.0.0", "markdown-it-mark": "~2.0.0", "markdown-it-mathjax": "~2.0.0", - "markdown-it-plantuml": "^1.4.1", "markdown-it-regexp": "~0.4.0", "markdown-it-sub": "~1.0.0", "markdown-it-sup": "~1.0.0", @@ -119,6 +118,7 @@ "pdfobject": "~2.0.201604172", "pg": "~6.1.2", "pg-hstore": "~2.3.2", + "plantuml-encoder": "^1.2.5", "prismjs": "~1.6.0", "randomcolor": "~0.5.3", "raphael": "~2.2.8", diff --git a/public/js/extra.js b/public/js/extra.js index 456018b4..27492254 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -31,6 +31,8 @@ require('prismjs/components/prism-gherkin') require('./lib/common/login') require('../vendor/md-toc') var Viz = require('viz.js') +const plantumlEncoder = require('plantuml-encoder') + const ui = getUIElements() // auto update last change @@ -970,10 +972,6 @@ md.use(require('markdown-it-emoji'), { shortcuts: {} }) -md.use(require('markdown-it-plantuml'), { - server: plantumlServer -}) - window.emojify.setConfig({ blacklist: { elements: ['script', 'textarea', 'a', 'pre', 'code', 'svg'], @@ -1040,6 +1038,33 @@ md.renderer.rules.fence = (tokens, idx, options, env, self) => { return `
${highlighted}
\n` } +const makePlantumlURL = (umlCode) => { + let format = 'svg' + let code = plantumlEncoder.encode(umlCode) + return `${plantumlServer}/${format}/${code}` +} + +// https://github.com/qjebbs/vscode-plantuml/tree/master/src/markdown-it-plantuml +md.renderer.rules.plantuml = (tokens, idx) => { + let token = tokens[idx] + if (token.type !== 'plantuml') { + return tokens[idx].content + } + + let url = makePlantumlURL(token.content) + return `` +} + +// https://github.com/qjebbs/vscode-plantuml/tree/master/src/markdown-it-plantuml +md.core.ruler.push('plantuml', (state) => { + let blockTokens = state.tokens + for (let blockToken of blockTokens) { + if (blockToken.type === 'fence' && blockToken.info === 'plantuml') { + blockToken.type = 'plantuml' + } + } +}) + // youtube const youtubePlugin = new Plugin( // regexp to match diff --git a/yarn.lock b/yarn.lock index 0c16c26b..38107459 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7898,11 +7898,6 @@ markdown-it-mathjax@~2.0.0: resolved "https://registry.yarnpkg.com/markdown-it-mathjax/-/markdown-it-mathjax-2.0.0.tgz#ae2b4f4c5c719a03f9e475c664f7b2685231d9e9" integrity sha1-ritPTFxxmgP55HXGZPeyaFIx2ek= -markdown-it-plantuml@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/markdown-it-plantuml/-/markdown-it-plantuml-1.4.1.tgz#3bd5e7d92eaa5c6c68eb29802f7b46a8e05ca998" - integrity sha512-13KgnZaGYTHBp4iUmGofzZSBz+Zj6cyqfR0SXUIc9wgWTto5Xhn7NjaXYxY0z7uBeTUMlc9LMQq5uP4OM5xCHg== - markdown-it-regexp@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/markdown-it-regexp/-/markdown-it-regexp-0.4.0.tgz#d64d713eecec55ce4cfdeb321750ecc099e2c2dc" @@ -9113,6 +9108,11 @@ packet-reader@0.2.0: resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-0.2.0.tgz#819df4d010b82d5ea5671f8a1a3acf039bcd7700" integrity sha1-gZ300BC4LV6lZx+KGjrPA5vNdwA= +pako@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.3.tgz#5f515b0c6722e1982920ae8005eacb0b7ca73ccf" + integrity sha1-X1FbDGci4ZgpIK6ABerLC3ynPM8= + pako@~1.0.5: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" @@ -9630,6 +9630,14 @@ pkginfo@^0.2.3: resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.2.3.tgz#7239c42a5ef6c30b8f328439d9b9ff71042490f8" integrity sha1-cjnEKl72wwuPMoQ52bn/cQQkkPg= +plantuml-encoder@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/plantuml-encoder/-/plantuml-encoder-1.2.5.tgz#6b8e5b9e1a1dbd88b3fd9fb46f734eec7d44b548" + integrity sha512-viV7Sz+BJNX/sC3iyebh2VfLyAZKuu3+JuBs2ISms8+zoTGwPqwk3/WEDw/zROmGAJ/xD4sNd8zsBw/YmTo7ng== + dependencies: + pako "1.0.3" + utf8-bytes "0.0.1" + platform@1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.5.tgz#fb6958c696e07e2918d2eeda0f0bc9448d733444" @@ -12791,6 +12799,11 @@ utf-8-validate@~5.0.1: dependencies: node-gyp-build "~3.7.0" +utf8-bytes@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/utf8-bytes/-/utf8-bytes-0.0.1.tgz#116b025448c9b500081cdfbf1f4d6c6c37d8837d" + integrity sha1-EWsCVEjJtQAIHN+/H01sbDfYg30= + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"