diff --git a/src/utils/changelog.js b/src/utils/changelog.js index a590a12..8dee259 100644 --- a/src/utils/changelog.js +++ b/src/utils/changelog.js @@ -14,6 +14,17 @@ const config = [ + { + version: 5.5, + title: "Oopsies!", + shortTitle: "", + date: "25/07/2019", + headColor: "rgba(15, 65, 70, 0.77)", + fix: [ + 'Removed codeblock highlighter due to some problems. Will be back in the future.', + ], + }, + { version: 5.4, title: "Bug Fixes!", diff --git a/src/utils/messageFormatter.js b/src/utils/messageFormatter.js index 0d9cbe3..1f3d7ef 100644 --- a/src/utils/messageFormatter.js +++ b/src/utils/messageFormatter.js @@ -2,8 +2,6 @@ import Formatter from 'futoji' import twemoji from 'twemoji' import emojiParser from '@/utils/emojiParser'; import config from "@/config.js"; -import hljs from 'highlight.js' -import { escape as escapeHTML, unescape as unescapeHTML } from 'validator' const futoji = new Formatter(); const emojiFormatter = new Formatter(); @@ -13,23 +11,24 @@ emojiFormatter.addTransformer({ symbol: ':', padding: false, recursive: false, - validate: text => /.+?&(.+?)/.test(text), + validate: text => /.+?&(.+?)/.test(text), transformer: owo }) function owo (text) { - const split = escapeHTML(text).split('&'); + const split = text.split('&'); if (!split || split.length <= 1) return `:${text}:`; const url = split[split.length - 1].slice(4); return `:${split[0]}:` } + futoji.addTransformer({ name: 'custom emoji', symbol: ':', padding: false, recursive: false, - validate: text => /.+?&(.+?)/.test(text), + validate: text => /.+?&(.+?)/.test(text), transformer: text => { const formattedInner = emojiFormatter.format(text); return owo(formattedInner); @@ -37,85 +36,80 @@ futoji.addTransformer({ } }) + + futoji.addTransformer({ name: 'url', open: 'http', close: ' ', recursive: false, validate: text => /(https?:\/\/[^\s]+)/g.test('http' + text), - transformer: text => 'http' + escapeHTML(text) + ' ' + transformer: text => 'http' + text + ' ' }) + futoji.addTransformer({ name: 'bold-and-italic', symbol: '***', - transformer: text => `${escapeHTML(text)}` + transformer: text => `${text}` }) futoji.addTransformer({ name: 'bold', symbol: '**', - transformer: text => `${escapeHTML(text)}` + transformer: text => `${text}` }) futoji.addTransformer({ name: 'italic', symbol: '*', - transformer: text => `${escapeHTML(text)}` + transformer: text => `${text}` }) futoji.addTransformer({ name: 'underline', symbol: '__', - transformer: text => `${escapeHTML(text)}` + transformer: text => `${text}` }) futoji.addTransformer({ name: 'italic', symbol: '_', - transformer: text => `${escapeHTML(text)}` + transformer: text => `${text}` }) futoji.addTransformer({ name: 'srike', symbol: '~~', - transformer: text => `${escapeHTML(text).trim()}` + transformer: text => `${text.trim()}` }) futoji.addTransformer({ name: 'code-block', symbol: '```', recursive: false, - transformer: text => { - let formatted = formatCode(text) - - let highlighted - if(formatted.lang.length === 0) { - return `
${escapeHTML(formatted.code)}
` - } else if(hljs.listLanguages().includes(formatted.lang)) { - highlighted = hljs.highlight(formatted.lang, formatted.code, true) - } else { - highlighted = hljs.highlightAuto(formatted.code) - } - - return `
${highlighted.value}
` - } + transformer: text => `
${formatCode(text).trim()}
`, }) futoji.addTransformer({ name: 'code', symbol: '`', recursive: false, - transformer: text => `${escapeHTML(text)}`, + transformer: text => `${text}`, }) export default (message) => { + message = futoji.format(escapeHtml(message + ' ')).trim(); message = emojiParser.replaceEmojis(message); + return message; } + + + /** - * format code to get language and code + * format code to add syntax highlighting */ function formatCode(text) { // matches if word until newline @@ -126,19 +120,14 @@ function formatCode(text) { let language = nameRegex.exec(text)[1] let newText = text.replace(nameRegex, '') - return { - lang: language, - code: newText - } + // TODO: format newText with language + + return newText } - return { - lang: '', - code: text.replace(/^\n/, '') - } + return text } -// todo: replace with well tested / faster method function escapeHtml(unsafe) { return unsafe .replace(/&/g, "&")