1import languages from "../data/languages.json";
2
3const extensions = Object.entries(languages).reduce((map, [code, value]) => {
4 if ("extensions" in value) {
5 return value.extensions.reduce((map, ext) => map.set(ext, code), map);
6 } else {
7 return map;
8 }
9}, new Map<string, string>());
10
11const filenames = Object.entries(languages).reduce((map, [code, value]) => {
12 if ("filenames" in value) {
13 return value.filenames.reduce(
14 (map, filename) => map.set(filename, code),
15 map,
16 );
17 } else {
18 return map;
19 }
20}, new Map<string, string>());
21
22export const languageColors = Object.entries(languages).reduce(
23 (map, [code, value]) => {
24 if ("color" in value) {
25 return map.set(code, value.color);
26 } else {
27 return map;
28 }
29 },
30 new Map<string, string>(),
31);
32
33export function getLanguage(filename: string | undefined): string | undefined {
34 if (!filename) return undefined;
35 const filenameExtension = filenames.get(filename);
36 if (filenameExtension) return filenameExtension;
37 const extension = filename.split(".").pop();
38 if (extension) return extensions.get(`.${extension}`);
39 return filenames.get(filename);
40}