summaryrefslogtreecommitdiff
path: root/packages/markdown/remark/src/remark-prism.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/markdown/remark/src/remark-prism.ts')
-rw-r--r--packages/markdown/remark/src/remark-prism.ts27
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