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())}${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, "'");
}