-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgetLanguageFromPath.ts
More file actions
92 lines (90 loc) · 2.24 KB
/
getLanguageFromPath.ts
File metadata and controls
92 lines (90 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import { AvailableLanguagesPrism } from "../SyntaxHighlight/availableLanguagesPrism";
/**
* Maps file extensions to syntax highlighting languages supported by react-syntax-highlighter
*/
export function getLanguageFromPath(filePath: string): AvailableLanguagesPrism {
const extension = filePath.split('.').pop()?.toLowerCase();
switch (extension) {
case 'js':
case 'mjs':
case 'cjs':
return 'javascript';
case 'jsx':
return 'jsx';
case 'ts':
return 'typescript';
case 'tsx':
return 'tsx';
case 'py':
case 'python':
return 'python';
case 'java':
return 'java';
case 'cpp':
case 'cc':
case 'cxx':
case 'c++':
return 'cpp';
case 'c':
case 'h':
return 'c';
case 'cs':
return 'csharp';
case 'php':
return 'php';
case 'rb':
case 'ruby':
return 'ruby';
case 'go':
return 'go';
case 'rs':
return 'rust';
case 'swift':
return 'swift';
case 'kt':
case 'kts':
return 'kotlin';
case 'scala':
return 'scala';
case 'sh':
case 'bash':
return 'bash';
case 'ps1':
return 'powershell';
case 'sql':
return 'sql';
case 'html':
case 'htm':
return 'html';
case 'css':
return 'css';
case 'scss':
case 'sass':
return 'scss';
case 'json':
return 'json';
case 'xml':
return 'xml';
case 'yaml':
case 'yml':
return 'yaml';
case 'md':
case 'markdown':
return 'markdown';
case 'dockerfile':
return 'dockerfile';
case 'r':
return 'r';
case 'dart':
return 'dart';
case 'lua':
return 'lua';
case 'perl':
case 'pl':
return 'perl';
case 'vim':
return 'vim';
default:
return 'text'; // fallback to javascript for unknown extensions
}
}