fix: escape lang value in code block renderer

This commit is contained in:
2026-03-09 10:49:44 +08:00
parent 33d75bf83a
commit 4774c05809

View File

@@ -59,12 +59,10 @@ function send() {
const renderer = new Renderer() const renderer = new Renderer()
renderer.code = function ({ text, lang }: { text: string; lang?: string }) { renderer.code = function ({ text, lang }: { text: string; lang?: string }) {
const label = lang ? `查看代码(${lang}` : "查看代码" const escape = (s: string) =>
const escaped = text s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
.replace(/&/g, "&amp;") const label = lang ? `查看代码(${escape(lang)}` : "查看代码"
.replace(/</g, "&lt;") return `<details class="code-block"><summary>${label}</summary><pre><code class="hljs${lang ? ` language-${escape(lang)}` : ""}">${escape(text)}</code></pre></details>`
.replace(/>/g, "&gt;")
return `<details class="code-block"><summary>${label}</summary><pre><code class="hljs${lang ? ` language-${lang}` : ""}">${escaped}</code></pre></details>`
} }
function renderMarkdown(text: string): string { function renderMarkdown(text: string): string {