Gem2a / app /static /js /utils.js
misonL's picture
Modularize frontend CSS and JavaScript assets
19bd286
Raw
History Blame Contribute Delete
1.53 kB
// app/static/js/utils.js - 辅助函数
/**
* 将文件转换为 Base64 编码字符串。
* @param {File} file - 要转换的文件对象。
* @returns {Promise<string>} - Base64 编码的字符串(不包含前缀)。
*/
export async function fileToBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result.split(',')[1]);
reader.onerror = error => reject(error);
reader.readAsDataURL(file);
});
}
/**
* 从文本中提取 Mermaid 代码块,并返回剩余文本。
* @param {string} text - 包含 Mermaid 代码的文本。
* @returns {{cleanedText: string, mermaidCodes: string[]}} - 包含清理后的文本和提取的Mermaid代码数组。
*/
export function extractContent(text) {
const mermaidCodes = [];
let cleanedText = text;
// 提取 Mermaid 代码块
const mermaidRegex = /```mermaid\n([\s\S]*?)\n```/g;
let mermaidMatch;
// 使用一个临时变量来迭代,避免修改原始字符串导致正则匹配问题
let tempText = cleanedText;
while ((mermaidMatch = mermaidRegex.exec(tempText)) !== null) {
mermaidCodes.push(mermaidMatch[1]);
// 从 cleanedText 中移除已提取的 Mermaid 代码块
// 注意:这里需要确保移除的是原始位置的匹配内容
cleanedText = cleanedText.replace(mermaidMatch[0], '');
}
return { cleanedText: cleanedText.trim(), mermaidCodes: mermaidCodes };
}