/
githubmirror
/
30-seconds-of-code
Обзор
Документация
Войти
/
githubmirror
/
30-seconds-of-code
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/lib/contentUtils/extractor.js
40 строк
2 KB
Angelos Chalaris
Add shiki as an alternative code highlighter
12 апр 2025, 21:54
Не верифицирован
12 апр 2025, 21:54
60744b7
Код
Авторство
О чём код?
import MarkdownParser from '#src/lib/contentUtils/markdownParser/markdownParser.js'; import Ranker from '#src/lib/contentUtils/ranker.js'; import FileHandler from '#src/lib/contentUtils/fileHandler.js'; import PrismHighlighter from '#src/lib/contentUtils/markdownParser/codeHighlighters/prism.js'; import ShikiHighlighter from '#src/lib/contentUtils/markdownParser/codeHighlighters/shiki.js'; import { grammarPath, rankingEnginePath, hubPath, languageGlob, snippetGlob, collectionGlob, } from '#src/lib/contentUtils/config.js'; import { extractLanguageData } from '#src/lib/contentUtils/modelWorkers/language.js'; import { extractSnippetData } from '#src/lib/contentUtils/modelWorkers/snippet.js'; import { extractCollectionData } from '#src/lib/contentUtils/modelWorkers/collection.js'; import { extractCollectionSnippetData } from '#src/lib/contentUtils/modelWorkers/collectionSnippet.js'; export const extractData = async (highlighter = 'shiki') => { const languages = await extractLanguageData(languageGlob); const grammars = await FileHandler.read(grammarPath); const hub = await FileHandler.read(hubPath); const keywordData = await FileHandler.read(rankingEnginePath); const codeHighlighter = highlighter === 'shiki' ? ShikiHighlighter : PrismHighlighter; codeHighlighter.setup(grammars); MarkdownParser.setupProcessors({ languages, grammars, codeHighlighter }); Ranker.keywordScores = keywordData; const snippets = await extractSnippetData(snippetGlob, languages); const collections = await extractCollectionData(collectionGlob, hub); const collectionSnippets = extractCollectionSnippetData( collections, snippets ); return { collections, snippets, languages, collectionSnippets, hub }; };