decodeText.js
1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import { emojiMap, emojiUrl } from './emojiMap'
/** 传入messageBody(群系统消息SystemMessage,群提示消息GroupTip除外)
* payload = {
* msgType: 'TIMTextElem',
* msgContent: {
* text: 'AAA[龇牙]AAA[龇牙]AAA[龇牙AAA]'
* }
*}
**/
export function decodeText (content) {
// console.log(payload);
const renderDom = []
let temp = content
let left = -1
let right = -1
while (temp !== '') {
left = temp.indexOf('[')
right = temp.indexOf(']')
switch (left) {
case 0:
if (right === -1) {
renderDom.push({
name: 'text',
content: temp
})
temp = ''
} else {
const emoji = temp.slice(0, right + 1)
if (emojiMap[emoji]) {
renderDom.push({
name: 'img',
src: emojiUrl + emojiMap[emoji]
})
temp = temp.substring(right + 1)
} else {
renderDom.push({
name: 'text',
content: '['
})
temp = temp.slice(1)
}
}
break
case -1:
renderDom.push({
name: 'text',
content: temp
})
temp = ''
break
default:
renderDom.push({
name: 'text',
content: temp.slice(0, left)
})
temp = temp.substring(left)
break
}
}
return renderDom
}