import MarkdownIt from '@/lib/markdown-it.min.js'; import hljs from "@/lib/highlight/highlight-uni.min.js"; import parseHtml from '@/lib/html-parser.js'; // import DOMPurify from '@/lib/dompurify@3.2.4es.js'; export let codeDataList = [] export let jobMoreMap = new Map() const md = new MarkdownIt({ html: true, // 允许 HTML 标签 linkify: true, // 自动解析 URL typographer: true, // 美化标点符号 tables: true, breaks: true, // 让 \n 自动换行 langPrefix: 'language-', // 代码高亮前缀 // 如果结果以
                    
${result.jobTitle}
${result.salary}
${result.location}·${result.companyName}
${result.education}
${result.experience}
查看详情
` if (result.data) { jobMoreMap.set(jobId, result.data) domContext += `查看更多岗位
` } return domContext } } //
${result.location}
//
${result.salary}
// 代码块 let preCode = "" try { preCode = hljs.highlightAuto(str).value } catch (err) { preCode = markdownIt.utils.escapeHtml(str); } // 以换行进行分割 , 按行拆分代码 const lines = preCode.split(/\n/).slice(0, -1); const html = lines .map((line, index) => line ? `
  • ${line}
  • ` : '' ) .join(''); // 代码复制功能 const cacheIndex = codeDataList.length; codeDataList.push(str); return `
    ${lang || 'plaintext'} 复制代码
      ${html}
    `; } }) function extractFirstJson(text) { let stack = []; let startIndex = -1; let endIndex = -1; for (let i = 0; i < text.length; i++) { const char = text[i]; if (char === '{') { if (stack.length === 0) startIndex = i; // 记录第一个 '{' 的位置 stack.push(char); } else if (char === '}') { stack.pop(); if (stack.length === 0) { endIndex = i; // 找到配对的 '}' break; } } } if (startIndex !== -1 && endIndex !== -1) { const jsonString = text.slice(startIndex, endIndex + 1); try { const jsonObject = JSON.parse(jsonString); return jsonObject; } catch (e) { return null; // 如果不是有效的 JSON } } return null; // 如果没有找到有效的 JSON 对象 } function safeExtractJson(text) { try { const jsonObject = extractFirstJson(text); return jsonObject } catch (e) { console.error('JSON 解析失败:', e); } return null; } export function clearJobMoreMap() { // 切换对话清空 jobMoreMap.clear() } export function parseMarkdown(content) { if (!content) { return //处理特殊情况,比如网络异常导致的响应的 content 的值为空 } codeDataList = [] const unsafeHtml = md.render(content || '') return unsafeHtml }