summaryrefslogtreecommitdiffstats
path: root/web/react
diff options
context:
space:
mode:
authorFlorian Orben <florian.orben@gmail.com>2015-11-07 02:22:39 +0100
committerFlorian Orben <florian.orben@gmail.com>2015-11-10 22:38:19 +0100
commit14cff7588fd1d88b6b503a410554344c5ba496d8 (patch)
treebee6e54b0d18e456406c3875a8a48374967c41d6 /web/react
parent31387be90b9b7e4b7e6a55d05af3d858bef6680a (diff)
downloadchat-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/.eslintrc5
-rw-r--r--web/react/utils/markdown.jsx9
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>';