mirror of
https://github.com/wahyd4/vuepress.git
synced 2026-08-20 10:45:51 +10:00
30 lines
955 B
JavaScript
30 lines
955 B
JavaScript
const parseEmojis = str => {
|
|
const emojiData = require('markdown-it-emoji/lib/data/full.json')
|
|
return String(str).replace(/:(.+?):/g, (placeholder, key) => emojiData[key] || placeholder)
|
|
}
|
|
|
|
const unescapeHtml = html => String(html)
|
|
.replace(/"/g, '"')
|
|
.replace(/'/g, '\'')
|
|
.replace(/:/g, ':')
|
|
.replace(/</g, '<')
|
|
.replace(/>/g, '>')
|
|
|
|
const removeMarkdownToken = str => String(str)
|
|
.replace(/`(.*)`/, '$1') // ``
|
|
.replace(/\[(.*)\]\(.*\)/, '$1') // []()
|
|
.replace(/\*\*(.*)\*\*/, '$1') // **
|
|
.replace(/\*(.*)\*/, '$1') // *
|
|
.replace(/_(.*)_/, '$1') // _
|
|
|
|
// put here to avoid circular references
|
|
const compose = (...processors) => {
|
|
if (processors.length === 0) return input => input
|
|
if (processors.length === 1) return processors[0]
|
|
return processors.reduce((prev, next) => {
|
|
return (...args) => next(prev(...args))
|
|
})
|
|
}
|
|
|
|
module.exports = compose(unescapeHtml, parseEmojis, removeMarkdownToken)
|