extremely wip tangled spa
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}