fix: properly apply dark/light classes in code blocks (#1546)

pull/1547/head
Divyansh Singh 2 years ago committed by GitHub
parent d9fc0b26a3
commit 178895f067
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -6,7 +6,6 @@ import {
createRangeProcessor,
getHighlighter,
Processor,
addClass,
defineProcessor
} from 'shiki-processor'
import type { ThemeOptions } from '../markdown'
@ -69,7 +68,8 @@ export async function highlight(
processors
})
const styleRE = /<pre .* (style=".*")><code>/
const classRE = /<pre[^>]*class="(.*?)"/
const styleRE = /<pre[^>]*(style=".*?")/
const preRE = /^<pre(.*?)>/
const vueRE = /-vue$/
@ -93,29 +93,21 @@ export async function highlight(
)
}
const dark = addClass(
cleanup(
highlighter.codeToHtml(str, {
lang,
lineOptions,
theme: getThemeName(theme.dark)
})
),
'vp-code-dark',
'pre'
)
const dark = cleanup(
highlighter.codeToHtml(str, {
lang,
lineOptions,
theme: getThemeName(theme.dark)
})
).replace(classRE, (_, cls) => _.replace(cls, 'vp-code-dark'))
const light = addClass(
cleanup(
highlighter.codeToHtml(str, {
lang,
lineOptions,
theme: getThemeName(theme.light)
})
),
'vp-code-light',
'pre'
)
const light = cleanup(
highlighter.codeToHtml(str, {
lang,
lineOptions,
theme: getThemeName(theme.light)
})
).replace(classRE, (_, cls) => _.replace(cls, 'vp-code-light'))
return dark + light
}

Loading…
Cancel
Save