diff --git a/frontend/src/components/MyPlugin.js b/frontend/src/components/MyPlugin.js new file mode 100644 index 000000000..1c35e70de --- /dev/null +++ b/frontend/src/components/MyPlugin.js @@ -0,0 +1,13 @@ +const MyPlugin = (md) => { + const LinkTargetBlank = (tokens, idx, options, env, slf) => { + if (tokens[idx].attrIndex('target') < 0) { + tokens[idx].attrPush(['target', '_blank']) + } + + return slf.renderToken(tokens, idx, options, env, slf) + } + + md.renderer.rules.link_open = LinkTargetBlank +} + +export default MyPlugin diff --git a/frontend/src/components/View.vue b/frontend/src/components/View.vue index 16bff62d1..1f01f5c1b 100644 --- a/frontend/src/components/View.vue +++ b/frontend/src/components/View.vue @@ -45,6 +45,7 @@ import MarkdownItAttrs from 'markdown-it-attrs' import MultimdTable from 'markdown-it-multimd-table' import RunPlugin from './RunPlugin' import SourceLinePlugin from './SourceLinePlugin' +import MyPlugin from './MyPlugin' import Highlight from 'highlight.js' import MermaidPlugin from './MermaidPlugin' @@ -83,7 +84,13 @@ export default { generateSource: umlCode => { return 'api/plantuml/png?data=' + encodeURIComponent(umlCode) } - }).use(RunPlugin).use(katex).use(SourceLinePlugin).use(MarkdownItAttrs).use(MultimdTable, {enableMultilineRows: true}) + }) + .use(RunPlugin) + .use(katex) + .use(SourceLinePlugin) + .use(MarkdownItAttrs) + .use(MyPlugin) + .use(MultimdTable, {enableMultilineRows: true}) } }, mounted () {