diff options
Diffstat (limited to 'packages/markdown/remark/src/remark-prism.ts')
-rw-r--r-- | packages/markdown/remark/src/remark-prism.ts | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/packages/markdown/remark/src/remark-prism.ts b/packages/markdown/remark/src/remark-prism.ts index d7a4ff996..d8dd8d922 100644 --- a/packages/markdown/remark/src/remark-prism.ts +++ b/packages/markdown/remark/src/remark-prism.ts @@ -4,24 +4,26 @@ import { addAstro } from '@astrojs/prism'; import loadLanguages from 'prismjs/components/index.js'; const noVisit = new Set(['root', 'html', 'text']); -const languageMap = new Map([['ts', 'typescript']]); +const languageMap = new Map([ + ['ts', 'typescript'] +]); function runHighlighter(lang: string, code: string) { - let classLanguage = `language-${lang}`; + let classLanguage = `language-${lang}` if (lang == null) { lang = 'plaintext'; } const ensureLoaded = (lang: string) => { - if (lang && !Prism.languages[lang]) { + if(lang && !Prism.languages[lang]) { loadLanguages([lang]); } }; - if (languageMap.has(lang)) { + if(languageMap.has(lang)) { ensureLoaded(languageMap.get(lang)!); - } else if (lang === 'astro') { + } else if(lang === 'astro') { ensureLoaded('typescript'); addAstro(Prism); } else { @@ -29,7 +31,7 @@ function runHighlighter(lang: string, code: string) { ensureLoaded(lang); } - if (lang && !Prism.languages[lang]) { + if(lang && !Prism.languages[lang]) { console.warn(`Unable to load the language: ${lang}`); } @@ -46,25 +48,26 @@ type MaybeString = string | null | undefined; /** */ function transformer(className: MaybeString) { - return function (tree: any) { + return function(tree: any) { const visitor = (node: any) => { - let { lang, value } = node; + let {lang, value} = node; node.type = 'html'; let { html, classLanguage } = runHighlighter(lang, value); let classes = [classLanguage]; - if (className) { + if(className) { classes.push(className); } node.value = `<pre class="${classes.join(' ')}"><code data-astro-raw class="${classLanguage}">${html}</code></pre>`; return node; }; - return visit(tree, 'code', visitor); - }; + return visit(tree, 'code', visitor) + } } + function plugin(className: MaybeString) { return transformer.bind(null, className); } -export default plugin; +export default plugin;
\ No newline at end of file |