mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-04-21 14:08:37 +00:00
feat(web): add settings & pages of privacy policy & user agreement
This commit is contained in:
61
web/src/utils/contentDetector.js
Normal file
61
web/src/utils/contentDetector.js
Normal file
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* 检测内容类型并返回相应的渲染信息
|
||||
*/
|
||||
|
||||
// 检查是否为 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';
|
||||
};
|
||||
Reference in New Issue
Block a user