mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-04-18 02:57:28 +00:00
61 lines
1.6 KiB
JavaScript
61 lines
1.6 KiB
JavaScript
/**
|
||
* 检测内容类型并返回相应的渲染信息
|
||
*/
|
||
|
||
// 检查是否为 URL
|
||
export const isUrl = (content) => {
|
||
try {
|
||
new URL(content);
|
||
return true;
|
||
} catch {
|
||
return false;
|
||
}
|
||
};
|
||
|
||
// 检查是否为 HTML 内容
|
||
export const isHtmlContent = (content) => {
|
||
if (!content || typeof content !== 'string') return false;
|
||
|
||
// 检查是否包含HTML标签
|
||
const htmlTagRegex = /<\/?[a-z][\s\S]*>/i;
|
||
return htmlTagRegex.test(content);
|
||
};
|
||
|
||
// 检查是否为 Markdown 内容
|
||
export const isMarkdownContent = (content) => {
|
||
if (!content || typeof content !== 'string') return false;
|
||
|
||
// 如果已经是HTML,则不是原始Markdown
|
||
if (isHtmlContent(content)) return false;
|
||
|
||
// 检查Markdown特征
|
||
const markdownFeatures = [
|
||
/^#{1,6}\s+.+$/m, // 标题
|
||
/^\*\s+.+$/m, // 无序列表
|
||
/^\d+\.\s+.+$/m, // 有序列表
|
||
/\*\*.+\*\*/, // 粗体
|
||
/\*.+\*/, // 斜体
|
||
/\[.+\]\(.+\)/, // 链接
|
||
/^>.+$/m, // 引用
|
||
/^```[\s\S]*?```$/m, // 代码块
|
||
/`[^`]+`/, // 行内代码
|
||
/^\|.+\|$/m, // 表格
|
||
/^---+$/m, // 分割线
|
||
];
|
||
|
||
return markdownFeatures.some(regex => regex.test(content));
|
||
};
|
||
|
||
// 获取内容类型
|
||
export const getContentType = (content) => {
|
||
if (!content) return 'empty';
|
||
|
||
const trimmedContent = content.trim();
|
||
|
||
if (isUrl(trimmedContent)) return 'url';
|
||
if (isHtmlContent(trimmedContent)) return 'html';
|
||
if (isMarkdownContent(trimmedContent)) return 'markdown';
|
||
|
||
// 默认当作纯文本处理
|
||
return 'text';
|
||
}; |