diff options
author | Florian Orben <florian.orben@gmail.com> | 2015-11-07 02:22:39 +0100 |
---|---|---|
committer | Florian Orben <florian.orben@gmail.com> | 2015-11-10 22:38:19 +0100 |
commit | 14cff7588fd1d88b6b503a410554344c5ba496d8 (patch) | |
tree | bee6e54b0d18e456406c3875a8a48374967c41d6 /web/react | |
parent | 31387be90b9b7e4b7e6a55d05af3d858bef6680a (diff) | |
download | chat-14cff7588fd1d88b6b503a410554344c5ba496d8.tar.gz chat-14cff7588fd1d88b6b503a410554344c5ba496d8.tar.bz2 chat-14cff7588fd1d88b6b503a410554344c5ba496d8.zip |
Add latex support
Adds latex highlighting support via https://www.npmjs.com/package/katex
as requested in
https://mattermost.uservoice.com/forums/306457-general/suggestions/10160757-add-latex-support
Diffstat (limited to 'web/react')
-rw-r--r-- | web/react/.eslintrc | 5 | ||||
-rw-r--r-- | web/react/utils/markdown.jsx | 9 |
2 files changed, 12 insertions, 2 deletions
diff --git a/web/react/.eslintrc b/web/react/.eslintrc index 7c98a2f0b..d4d28e863 100644 --- a/web/react/.eslintrc +++ b/web/react/.eslintrc @@ -6,7 +6,7 @@ "modules": true, "classes": true, "arrowFunctions": true, - "defaultParams": true, + "defaultParams": true }, "parser": "babel-eslint", "plugins": [ @@ -22,7 +22,8 @@ "React": false, "ReactDOM": false, "ReactBootstrap": false, - "Chart": false + "Chart": false, + "katex": false }, "rules": { "comma-dangle": [2, "never"], diff --git a/web/react/utils/markdown.jsx b/web/react/utils/markdown.jsx index 946f93078..3d967ae6d 100644 --- a/web/react/utils/markdown.jsx +++ b/web/react/utils/markdown.jsx @@ -69,6 +69,15 @@ class MattermostMarkdownRenderer extends marked.Renderer { usedLanguage = 'xml'; } + if (usedLanguage && (usedLanguage === 'tex' || usedLanguage === 'tex')) { + try { + var html = katex.renderToString(TextFormatting.sanitizeHtml(code), {throwOnError: false, displayMode: true}); + return '<div class="post-body--code tex">' + html + '</div>'; + } catch (e) { + return '<div class="post-body--code">' + TextFormatting.sanitizeHtml(code) + '</div>'; + } + } + if (!usedLanguage || highlightJs.listLanguages().indexOf(usedLanguage) < 0) { let parsed = super.code(code, usedLanguage); return '<div class="post-body--code"><code class="hljs">' + TextFormatting.sanitizeHtml($(parsed).text()) + '</code></div>'; |