Fixed newlines being stripped from multiline code blocks

Этот коммит содержится в:
hmhealey
2015-11-20 11:43:44 -05:00
родитель fc346bcb05
Коммит dd3dc8c924

Просмотреть файл

@@ -110,32 +110,47 @@ class MattermostMarkdownRenderer extends marked.Renderer {
this.formattingOptions = formattingOptions; this.formattingOptions = formattingOptions;
} }
code(code, language) { code(code, language, escaped) {
let usedLanguage = language; let usedLanguage = language || '';
usedLanguage = usedLanguage.toLowerCase();
if (String(usedLanguage).toLocaleLowerCase() === 'html') { // treat html as xml to prevent injection attacks
if (usedLanguage === 'html') {
usedLanguage = 'xml'; usedLanguage = 'xml';
} }
if (usedLanguage && (usedLanguage === 'tex' || usedLanguage === 'latex')) { if (HighlightedLanguages[usedLanguage]) {
const parsed = highlightJs.highlight(usedLanguage, code);
return (
'<div class="post-body--code">' +
'<span class="post-body--code__language">' +
HighlightedLanguages[usedLanguage] +
'</span>' +
'<pre>' +
'<code class="hljs">' +
parsed.value +
'</code>' +
'</pre>' +
'</div>'
);
} else if (usedLanguage === 'tex' || usedLanguage === 'latex') {
try { try {
var html = katex.renderToString(TextFormatting.sanitizeHtml(code), {throwOnError: false, displayMode: true}); const html = katex.renderToString(TextFormatting.sanitizeHtml(code), {throwOnError: false, displayMode: true});
return '<div class="post-body--code tex">' + html + '</div>'; return '<div class="post-body--code tex">' + html + '</div>';
} catch (e) { } catch (e) {
return '<div class="post-body--code">' + TextFormatting.sanitizeHtml(code) + '</div>'; // fall through if latex parsing fails and handle below
} }
} }
if (!usedLanguage || highlightJs.listLanguages().indexOf(usedLanguage) < 0) { return (
let parsed = super.code(code, usedLanguage); '<pre>' +
return '<div class="post-body--code"><code class="hljs">' + TextFormatting.sanitizeHtml($(parsed).text()) + '</code></div>'; '<code class="hljs">' +
} (escaped ? code : TextFormatting.sanitizeHtml(code)) + '\n' +
'</code>' +
let parsed = highlightJs.highlight(usedLanguage, code); '</pre>'
return '<div class="post-body--code">' + );
'<span class="post-body--code__language">' + HighlightedLanguages[usedLanguage] + '</span>' +
'<code class="hljs">' + parsed.value + '</code>' +
'</div>';
} }
br() { br() {