markdown-code-example-inserter
Version:
Syncs code examples with markdown documentation.
27 lines (26 loc) • 1.1 kB
JavaScript
import { getObjectTypedKeys } from '@augment-vir/common';
import { extname } from 'node:path';
import { languageMap } from './language-map.js';
// extensions that will never match any other language name
const requiredLanguageExtension = {
XML: '.xml',
};
export function getFileLanguageName(fileName) {
const extension = extname(fileName);
const matchedLanguageNames = getObjectTypedKeys(languageMap).filter((languageName) => {
const languageData = languageMap[languageName];
if (!('extensions' in languageData)) {
return false;
}
const requiredExtensionForLanguage = requiredLanguageExtension[languageName];
if (languageName in requiredLanguageExtension &&
requiredExtensionForLanguage !== extension) {
return false;
}
return languageData.extensions.includes(extension);
});
if (matchedLanguageNames.length > 1) {
console.warn(`Multiple languages for code block were matched for '${fileName}': ${matchedLanguageNames.join(', ')}`);
}
return matchedLanguageNames[0];
}