diff --git a/src/node/markdown/markdown.ts b/src/node/markdown/markdown.ts index a091639a..be4b8250 100644 --- a/src/node/markdown/markdown.ts +++ b/src/node/markdown/markdown.ts @@ -113,6 +113,7 @@ export interface MarkdownOptions extends Options { /** * Custom language labels for display. * Overrides the default language label shown in code blocks. + * Keys are case-insensitive. * * @example { 'vue': 'Vue SFC' } */ diff --git a/src/node/markdown/plugins/highlight.ts b/src/node/markdown/plugins/highlight.ts index 780e37e8..8a3dd9e0 100644 --- a/src/node/markdown/plugins/highlight.ts +++ b/src/node/markdown/plugins/highlight.ts @@ -68,14 +68,12 @@ export async function highlight( ...(options.languages || []), ...Object.values(options.languageAlias || {}) ], - langAlias: options.languageAlias - ? Object.fromEntries( - Object.entries(options.languageAlias).map(([key, value]) => [ - key.toLowerCase(), - value - ]) - ) - : undefined + langAlias: Object.fromEntries( + Object.entries(options.languageAlias || {}).map(([k, v]) => [ + k.toLowerCase(), + v + ]) + ) }) await options?.shikiSetup?.(highlighter) diff --git a/src/node/markdown/plugins/preWrapper.ts b/src/node/markdown/plugins/preWrapper.ts index 38266509..c357c1d6 100644 --- a/src/node/markdown/plugins/preWrapper.ts +++ b/src/node/markdown/plugins/preWrapper.ts @@ -6,6 +6,13 @@ export interface Options { } export function preWrapperPlugin(md: MarkdownItAsync, options: Options) { + const languageLabel = Object.fromEntries( + Object.entries(options.languageLabel || {}).map(([k, v]) => [ + k.toLowerCase(), + v + ]) + ) + const fence = md.renderer.rules.fence! md.renderer.rules.fence = (...args) => { const [tokens, idx] = args @@ -18,7 +25,8 @@ export function preWrapperPlugin(md: MarkdownItAsync, options: Options) { token.info = token.info.replace(/ active$/, '').replace(/ active /, ' ') const lang = extractLang(token.info) - const langLabel = options.languageLabel?.[lang] || lang.replace(/_/g, ' ') + const langLabel = + languageLabel[lang.toLowerCase()] || lang.replace(/_/g, ' ') return ( `
` +