import futoji from 'futoji' export default (message) => { message = escapeHtml(message) 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, "'"); }