escaped everything manually to fix highlighting bug

This commit is contained in:
brecert 2019-07-09 23:50:22 -04:00
parent 3d4001a420
commit bb2381f6f2

View file

@ -18,7 +18,7 @@ emojiFormatter.addTransformer({
}) })
function owo (text) { function owo (text) {
const split = text.split('&'); const split = escapeHTML(text).split('&');
if (!split || split.length <= 1) return `:${text}:`; if (!split || split.length <= 1) return `:${text}:`;
const url = split[split.length - 1].slice(4); const url = split[split.length - 1].slice(4);
return `<img class="emoji" draggable="false" alt=":${split[0]}:" src="${config.domain + "/files/" + url}">` return `<img class="emoji" draggable="false" alt=":${split[0]}:" src="${config.domain + "/files/" + url}">`
@ -43,41 +43,41 @@ futoji.addTransformer({
close: ' ', close: ' ',
recursive: false, recursive: false,
validate: text => /(https?:\/\/[^\s]+)/g.test('http' + text), validate: text => /(https?:\/\/[^\s]+)/g.test('http' + text),
transformer: text => '<a class="msg-link" target="_blank" href="http' + text + '">http' + text + '</a> ' transformer: text => '<a class="msg-link" target="_blank" href="http' + escapeHTML(text) + '">http' + escapeHTML(text) + '</a> '
}) })
futoji.addTransformer({ futoji.addTransformer({
name: 'bold-and-italic', name: 'bold-and-italic',
symbol: '***', symbol: '***',
transformer: text => `<strong><em>${text}</em></strong>` transformer: text => `<strong><em>${escapeHTML(text)}</em></strong>`
}) })
futoji.addTransformer({ futoji.addTransformer({
name: 'bold', name: 'bold',
symbol: '**', symbol: '**',
transformer: text => `<strong>${text}</strong>` transformer: text => `<strong>${escapeHTML(text)}</strong>`
}) })
futoji.addTransformer({ futoji.addTransformer({
name: 'italic', name: 'italic',
symbol: '*', symbol: '*',
transformer: text => `<em>${text}</em>` transformer: text => `<em>${escapeHTML(text)}</em>`
}) })
futoji.addTransformer({ futoji.addTransformer({
name: 'underline', name: 'underline',
symbol: '__', symbol: '__',
transformer: text => `<u>${text}</u>` transformer: text => `<u>${escapeHTML(text)}</u>`
}) })
futoji.addTransformer({ futoji.addTransformer({
name: 'italic', name: 'italic',
symbol: '_', symbol: '_',
transformer: text => `<em>${text}</em>` transformer: text => `<em>${escapeHTML(text)}</em>`
}) })
futoji.addTransformer({ futoji.addTransformer({
name: 'srike', name: 'srike',
symbol: '~~', symbol: '~~',
transformer: text => `<s>${text.trim()}</s>` transformer: text => `<s>${escapeHTML(text).trim()}</s>`
}) })
futoji.addTransformer({ futoji.addTransformer({
@ -85,18 +85,18 @@ futoji.addTransformer({
symbol: '```', symbol: '```',
recursive: false, recursive: false,
transformer: text => { transformer: text => {
let formatted = formatCode(unescapeHTML(text)) let formatted = formatCode(text)
let highlighted let highlighted
if(formatted.lang.length === 0) { if(formatted.lang.length === 0) {
return `<div class="codeblock"><code>${formatted.code}</code></div>` return `<div class="codeblock"><code>${escapeHTML(formatted.code)}</code></div>`
} else if(hljs.listLanguages().includes(formatted.lang)) { } else if(hljs.listLanguages().includes(formatted.lang)) {
highlighted = hljs.highlight(formatted.lang, formatted.code, true) highlighted = hljs.highlight(formatted.lang, formatted.code, true)
} else { } else {
highlighted = hljs.highlightAuto(formatted.code) highlighted = hljs.highlightAuto(formatted.code)
} }
return `<div class="codeblock"><code lang="${highlighted.language}">${highlighted.value}</code></div>` return `<div class="codeblock"><code lang="${escapeHTML(highlighted.language)}">${highlighted.value}</code></div>`
} }
}) })
@ -104,12 +104,11 @@ futoji.addTransformer({
name: 'code', name: 'code',
symbol: '`', symbol: '`',
recursive: false, recursive: false,
transformer: text => `<code>${text}</code>`, transformer: text => `<code>${escapeHTML(text)}</code>`,
}) })
export default (message) => { export default (message) => {
message = futoji.format(message + '').trim();
message = futoji.format(escapeHtml(message + ' ')).trim();
message = emojiParser.replaceEmojis(message); message = emojiParser.replaceEmojis(message);