mirror of
https://github.com/kuaifan/dootask.git
synced 2026-01-15 19:28:11 +00:00
79 lines
3.1 KiB
JavaScript
Executable File
Vendored
79 lines
3.1 KiB
JavaScript
Executable File
Vendored
module.exports = {
|
|
/**
|
|
* 消息格式化处理
|
|
* @param text
|
|
* @param userid
|
|
* @returns {string|*}
|
|
*/
|
|
textMsgFormat(text, userid) {
|
|
if (!text) {
|
|
return ""
|
|
}
|
|
const atReg = new RegExp(`<span class="mention user" data-id="${userid}">`, "g")
|
|
text = text.trim().replace(/(\n\x20*){3,}/g, "\n\n");
|
|
text = text.replace(/ /g, ' ')
|
|
text = text.replace(/<p><\/p>/g, '<p><br/></p>')
|
|
text = text.replace(/\{\{RemoteURL\}\}/g, $A.apiUrl('../'))
|
|
text = text.replace(atReg, `<span class="mention me" data-id="${userid}">`)
|
|
// 处理内容连接
|
|
if (/https*:\/\//.test(text)) {
|
|
text = text.split(/(<[^>]*>)/g).map(string => {
|
|
if (string && !/<[^>]*>/.test(string)) {
|
|
string = string.replace(/(https*:\/\/)((\w|=|\?|\.|\/|&|-|:|\+|%|;|#)+)/g, "<a href=\"$1$2\" target=\"_blank\">$1$2</a>")
|
|
}
|
|
return string;
|
|
}).join("")
|
|
}
|
|
// 处理图片显示尺寸
|
|
const array = text.match(/<img\s+[^>]*?>/g);
|
|
if (array) {
|
|
const widthReg = new RegExp("width=\"(\\d+)\""),
|
|
heightReg = new RegExp("height=\"(\\d+)\"")
|
|
array.some(res => {
|
|
const widthMatch = res.match(widthReg),
|
|
heightMatch = res.match(heightReg);
|
|
if (widthMatch && heightMatch) {
|
|
const width = parseInt(widthMatch[1]),
|
|
height = parseInt(heightMatch[1]),
|
|
maxSize = res.indexOf("emoticon") > -1 ? 150 : 220;
|
|
const scale = $A.scaleToScale(width, height, maxSize, maxSize);
|
|
const value = res
|
|
.replace(widthReg, `original-width="${width}" width="${scale.width}"`)
|
|
.replace(heightReg, `original-height="${height}" height="${scale.height}"`)
|
|
text = text.replace(res, value)
|
|
}
|
|
})
|
|
}
|
|
return text;
|
|
},
|
|
|
|
/**
|
|
* 获取文本消息图片
|
|
* @param text
|
|
* @returns {*[]}
|
|
*/
|
|
textImagesInfo(text) {
|
|
const baseUrl = $A.apiUrl('../');
|
|
const array = text.match(new RegExp(`<img[^>]*?>`, "g"));
|
|
const list = [];
|
|
if (array) {
|
|
const srcReg = new RegExp("src=([\"'])([^'\"]*)\\1"),
|
|
widthReg = new RegExp("(original-)?width=\"(\\d+)\""),
|
|
heightReg = new RegExp("(original-)?height=\"(\\d+)\"")
|
|
array.some(res => {
|
|
const srcMatch = res.match(srcReg),
|
|
widthMatch = res.match(widthReg),
|
|
heightMatch = res.match(heightReg);
|
|
if (srcMatch) {
|
|
list.push({
|
|
src: srcMatch[2].replace(/\{\{RemoteURL\}\}/g, baseUrl),
|
|
width: widthMatch ? widthMatch[2] : -1,
|
|
height: heightMatch ? heightMatch[2] : -1,
|
|
})
|
|
}
|
|
})
|
|
}
|
|
return list;
|
|
}
|
|
}
|