vue-text-filters
Version:
vue text filters, handle some code like wx-emotions/softbank-emoji/...
35 lines (30 loc) • 998 B
JavaScript
import { WxEmotions } from 'wechat-square-bracket-emotions'
var WE = new WxEmotions()
export let sbEmotions = (message) => {
if (!message || !message.length) {
return ''
}
let newMessage = ''
while (message) {
if (WxEmotions.hasEmotionsPattern(message)) {
let openIndex = message.indexOf('[')
let closeIndex = message.indexOf(']')
let diffIndex = closeIndex - openIndex
let text = message.slice(0, openIndex)
let emotionText = message.slice(openIndex + 1, closeIndex)
let allText = message.slice(0, closeIndex + 1)
let emotionImage = WE.textToImage(emotionText)
if ((diffIndex > 1 && diffIndex <= 4) && emotionImage) {
newMessage += text
newMessage += `<span>${emotionImage}</span>`
} else {
newMessage += allText
}
message = message.substr(closeIndex + 1)
} else {
newMessage += message
return newMessage
}
}
return newMessage
}