feat: support alias

pull/3237/head
Anthony Fu 2 years ago
parent 98ba8a5141
commit e8ca2de421

@ -101,8 +101,8 @@
"mark.js": "8.11.1", "mark.js": "8.11.1",
"minisearch": "^6.2.0", "minisearch": "^6.2.0",
"mrmime": "^1.0.1", "mrmime": "^1.0.1",
"shikiji": "^0.7.0", "shikiji": "^0.7.1",
"shikiji-transformers": "^0.7.0", "shikiji-transformers": "^0.7.1",
"vite": "^5.0.0", "vite": "^5.0.0",
"vue": "^3.3.8" "vue": "^3.3.8"
}, },

@ -45,11 +45,11 @@ importers:
specifier: ^1.0.1 specifier: ^1.0.1
version: 1.0.1 version: 1.0.1
shikiji: shikiji:
specifier: ^0.7.0 specifier: ^0.7.1
version: 0.7.0 version: 0.7.1
shikiji-transformers: shikiji-transformers:
specifier: ^0.7.0 specifier: ^0.7.1
version: 0.7.0 version: 0.7.1
vite: vite:
specifier: ^5.0.0 specifier: ^5.0.0
version: 5.0.0(@types/node@20.9.1) version: 5.0.0(@types/node@20.9.1)
@ -4163,14 +4163,14 @@ packages:
resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
dev: true dev: true
/shikiji-transformers@0.7.0: /shikiji-transformers@0.7.1:
resolution: {integrity: sha512-IuujhNtUjs6kyNRjrn36k5Aj/Ea7JZpoB5YaM7rqkK+sM6MdIQBcZDAOhvoD/ITgFht4bcamGXvZ8+Aw1j7VZQ==} resolution: {integrity: sha512-Y4MsRl8s/rx6xnO3kckKC6j93YJepeGT8ye9Bnz6ecadrtqKXZbDeERLX9OgkEhKNwxLlvo9Yk9N59oNj/O0QQ==}
dependencies: dependencies:
shikiji: 0.7.0 shikiji: 0.7.1
dev: false dev: false
/shikiji@0.7.0: /shikiji@0.7.1:
resolution: {integrity: sha512-Tzx9pS9ixMVNsfZjeOoJWR3t3Vw054LU/r2euAGSRJPg8/v1sumxZsZQrajai2jpksn0qT3HJXcqzNaiJcJSag==} resolution: {integrity: sha512-w/zKRaYe6RhkksZily2WG7yzz/g6qJsqrJom9OVbhLd4pzONXbVNWOlNHYhpMJ1SRvRp7CWVbh3MXy34bLKV4g==}
dependencies: dependencies:
hast-util-to-html: 9.0.0 hast-util-to-html: 9.0.0
dev: false dev: false

@ -61,13 +61,31 @@ export interface MarkdownOptions extends MarkdownIt.Options {
sfc?: SfcPluginOptions sfc?: SfcPluginOptions
theme?: ThemeOptions theme?: ThemeOptions
languages?: LanguageInput[] languages?: LanguageInput[]
languageAlias?: Record<string, string>
toc?: TocPluginOptions toc?: TocPluginOptions
externalLinks?: Record<string, string> externalLinks?: Record<string, string>
cache?: boolean cache?: boolean
/**
* Options for `@mdit-vue/plugin-component`
* @see https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-component
*/
component?: ComponentPluginOptions component?: ComponentPluginOptions
/**
* Enable math support by `markdown-it-mathjax3`
* @default false
* @see https://vitepress.dev/guide/markdown#math-equations
*/
math?: boolean | any math?: boolean | any
/**
* Options for `markdown-it-container`
* @see https://github.com/markdown-it/markdown-it-container
*/
container?: ContainerOptions container?: ContainerOptions
shikijiTransformers?: ShikijiTransformer[] /**
* Transformers applied to code blocks
* @see https://github.com/antfu/shikiji#hast-transformers
*/
codeTransformers?: ShikijiTransformer[]
} }
export type MarkdownRenderer = MarkdownIt export type MarkdownRenderer = MarkdownIt
@ -91,7 +109,8 @@ export const createMarkdownRenderer = async (
options.languages, options.languages,
options.defaultHighlightLang, options.defaultHighlightLang,
logger, logger,
options.shikijiTransformers options.codeTransformers,
options.languageAlias
)), )),
...options ...options
}) })

@ -58,14 +58,16 @@ export async function highlight(
languages?: LanguageInput[], languages?: LanguageInput[],
defaultLang: string = '', defaultLang: string = '',
logger: Pick<Logger, 'warn'> = console, logger: Pick<Logger, 'warn'> = console,
userTransformers: ShikijiTransformer[] = [] userTransformers: ShikijiTransformer[] = [],
languageAlias: Record<string, string> = {}
): Promise<(str: string, lang: string, attrs: string) => string> { ): Promise<(str: string, lang: string, attrs: string) => string> {
const highlighter = await getHighlighter({ const highlighter = await getHighlighter({
themes: themes:
typeof theme === 'string' || 'name' in theme typeof theme === 'string' || 'name' in theme
? [theme] ? [theme]
: [theme.light, theme.dark], : [theme.light, theme.dark],
langs: languages?.length ? languages : Object.keys(bundledLanguages) langs: languages?.length ? languages : Object.keys(bundledLanguages),
langAlias: languageAlias,
}) })
const transformers: ShikijiTransformer[] = [ const transformers: ShikijiTransformer[] = [

@ -44,4 +44,5 @@ function extractLang(info: string) {
.replace(/:(no-)?line-numbers({| |$|=\d*).*/, '') .replace(/:(no-)?line-numbers({| |$|=\d*).*/, '')
.replace(/(-vue|{| ).*$/, '') .replace(/(-vue|{| ).*$/, '')
.replace(/^vue-html$/, 'template') .replace(/^vue-html$/, 'template')
.replace(/^ansi$/, '')
} }

Loading…
Cancel
Save