import futoji from 'futoji' import twemoji from 'twemoji' export default (message) => { message = twemoji.parse(escapeHtml(message), function (icon, options, variant) { return require("twemoji/2/svg/" + icon + ".svg") }) futoji.addTransformer({ name: 'bold-and-italic', symbol: '***', transformer: text => `${text}` }) futoji.addTransformer({ name: 'bold', symbol: '**', transformer: text => `${text}` }) futoji.addTransformer({ name: 'italic', symbol: '*', transformer: text => `${text}` }) futoji.addTransformer({ name: 'underline', symbol: '__', transformer: text => `${text}` }) futoji.addTransformer({ name: 'italic', symbol: '_', transformer: text => `${text}` }) futoji.addTransformer({ name: 'srike', symbol: '~~', transformer: text => `${text.trim()}` }) futoji.addTransformer({ name: 'code-block', symbol: '```', recursive: false, transformer: text => `
${formatCode(text.trim())}
`, }) futoji.addTransformer({ name: 'code', symbol: '`', recursive: false, transformer: text => `${text}`, }) return futoji.format(message); } /** * format code to add syntax highlighting */ function formatCode(text) { // matches if word until newline // if spaces then it won't match let nameRegex = new RegExp('^(\\w+)\\n') if (nameRegex.test(text)) { let language = nameRegex.exec(text)[1] let newText = text.replace(nameRegex, '') // TODO: format newText with language return newText } return text } function escapeHtml(unsafe) { return unsafe .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); }