From 43968b2f8bd65f231356bea460aca07780a98bcb Mon Sep 17 00:00:00 2001 From: brecert <11599528+Brecert@users.noreply.github.com> Date: Sat, 27 Jul 2019 14:24:51 -0400 Subject: [PATCH] moved markdown-it formatters to their own plugins --- src/utils/markdown-it-plugins/formatCode.js | 10 ++++++ src/utils/markdown-it-plugins/formatLink.js | 12 +++++++ src/utils/messageFormatter.js | 36 +++------------------ 3 files changed, 27 insertions(+), 31 deletions(-) create mode 100644 src/utils/markdown-it-plugins/formatCode.js create mode 100644 src/utils/markdown-it-plugins/formatLink.js diff --git a/src/utils/markdown-it-plugins/formatCode.js b/src/utils/markdown-it-plugins/formatCode.js new file mode 100644 index 0000000..565b9db --- /dev/null +++ b/src/utils/markdown-it-plugins/formatCode.js @@ -0,0 +1,10 @@ +export default function formatCode(md, opts) { + const defaultRender = md.renderer.rules.code_inline || function(tokens, idx, options, env, self) { + return self.renderToken(tokens, idx, options); + }; + + md.renderer.rules.code_inline = function (tokens, idx, options, env, self) { + tokens[idx].attrPush(['class', 'code-inline']); + return defaultRender(tokens, idx, options, env, self); + }; +} \ No newline at end of file diff --git a/src/utils/markdown-it-plugins/formatLink.js b/src/utils/markdown-it-plugins/formatLink.js new file mode 100644 index 0000000..78495b9 --- /dev/null +++ b/src/utils/markdown-it-plugins/formatLink.js @@ -0,0 +1,12 @@ +export default function formatLink(md, opts) { + const defaultRender = md.renderer.rules.link_open || function(tokens, idx, options, env, self) { + return self.renderToken(tokens, idx, options); + }; + + md.renderer.rules.link_open = function (tokens, idx, options, env, self) { + tokens[idx].attrPush(['target', '_blank']); // add new attribute + tokens[idx].attrPush(['class', 'msg-link']); + // pass token to default renderer. + return defaultRender(tokens, idx, options, env, self); + }; +} \ No newline at end of file diff --git a/src/utils/messageFormatter.js b/src/utils/messageFormatter.js index 8c4c524..0694d54 100644 --- a/src/utils/messageFormatter.js +++ b/src/utils/messageFormatter.js @@ -3,6 +3,8 @@ import emojiParser from '@/utils/emojiParser'; import config from "@/config.js"; import customEmoji from './markdown-it-plugins/customEmoji' +import formatLink from './markdown-it-plugins/formatLink' +import formatCode from './markdown-it-plugins/formatCode' import hljs from 'highlight.js' @@ -24,37 +26,9 @@ const markdown = new MarkdownIt({ return '
' + markdown.utils.escapeHtml(str) + '
'; } }).use(chatPlugin) - .use(customEmoji); - - -//add attributes to link tag -(function() { - const defaultRender = markdown.renderer.rules.link_open || function(tokens, idx, options, env, self) { - return self.renderToken(tokens, idx, options); - }; - - markdown.renderer.rules.link_open = function (tokens, idx, options, env, self) { - tokens[idx].attrPush(['target', '_blank']); // add new attribute - tokens[idx].attrPush(['class', 'msg-link']); - // pass token to default renderer. - return defaultRender(tokens, idx, options, env, self); - }; -})(); - -// add addribute to code -(function() { - const defaultRender = markdown.renderer.rules.code_inline || function(tokens, idx, options, env, self) { - return self.renderToken(tokens, idx, options); - }; - - markdown.renderer.rules.code_inline = function (tokens, idx, options, env, self) { - tokens[idx].attrPush(['class', 'code-inline']); - // pass token to default renderer. - return defaultRender(tokens, idx, options, env, self); - }; -})(); -console.log(markdown.renderer.rules) - + .use(customEmoji) + .use(formatLink) + .use(formatCode); export default (message) => {