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