test/node_modules/@vuepress/plugin-prismjs/lib/node/utils/resolveLanguage.js
2024-08-13 09:27:52 +08:00

30 lines
807 B
JavaScript

import * as languages from './languages.js';
/**
* A key-value map to get language info from alias
*
* - key: alias
* - value: language
*/
let languagesMap;
/**
* Lazy generate languages map
*/
const getLanguagesMap = () => (languagesMap ??= Object.values(languages).reduce((result, item) => ({
...result,
...Object.fromEntries(item.aliases.map((alias) => [alias, item])),
}), {}));
/**
* Resolve language for highlight from token info
*/
export const resolveLanguage = (info) => {
// get user-defined language alias
const alias = info.match(/^([^ :[{]+)/)?.[1] || 'text';
// if the alias does not have a match in the map
// fallback to the alias itself
return (getLanguagesMap()[alias] ?? {
name: alias,
ext: alias,
aliases: [alias],
});
};