1use std::path::Path;
2use std::sync::Arc;
3use tree_sitter::Language;
4
5use crate::preproc::PreprocResults;
6use crate::*;
7
8mk_langs!(
9 (
18 Mozjs,
19 "The `Mozjs` language is variant of the `JavaScript` language",
20 "javascript",
21 MozjsCode,
22 MozjsParser,
23 tree_sitter_mozjs,
24 [js, jsm, mjs, jsx],
25 ["js", "js2"]
26 ),
27 (
28 Javascript,
29 "The `JavaScript` language",
30 "javascript",
31 JavascriptCode,
32 JavascriptParser,
33 tree_sitter_javascript,
34 [],
35 []
36 ),
37 (
38 Java,
39 "The `Java` language",
40 "java",
41 JavaCode,
42 JavaParser,
43 tree_sitter_java,
44 [java],
45 ["java"]
46 ),
47 (
48 Rust,
49 "The `Rust` language",
50 "rust",
51 RustCode,
52 RustParser,
53 tree_sitter_rust,
54 [rs],
55 ["rust"]
56 ),
57 (
58 Cpp,
59 "The `C/C++` language",
60 "c/c++",
61 CppCode,
62 CppParser,
63 tree_sitter_cpp,
64 [cpp, cxx, cc, hxx, hpp, c, h, hh, inc, mm, m],
65 ["c++", "c", "objc", "objc++", "objective-c++", "objective-c"]
66 ),
67 (
68 Python,
69 "The `Python` language",
70 "python",
71 PythonCode,
72 PythonParser,
73 tree_sitter_python,
74 [py],
75 ["python"]
76 ),
77 (
78 Tsx,
79 "The `Tsx` language incorporates the `JSX` syntax inside `TypeScript`",
80 "typescript",
81 TsxCode,
82 TsxParser,
83 tree_sitter_tsx,
84 [tsx],
85 []
86 ),
87 (
88 Typescript,
89 "The `TypeScript` language",
90 "typescript",
91 TypescriptCode,
92 TypescriptParser,
93 tree_sitter_typescript,
94 [ts, jsw, jsmw],
95 ["typescript"]
96 ),
97 (
98 Ccomment,
99 "The `Ccomment` language is a variant of the `C` language focused on comments",
100 "ccomment",
101 CcommentCode,
102 CcommentParser,
103 tree_sitter_ccomment,
104 [],
105 []
106 ),
107 (
108 Preproc,
109 "The `PreProc` language is a variant of the `C/C++` language focused on macros",
110 "preproc",
111 PreprocCode,
112 PreprocParser,
113 tree_sitter_preproc,
114 [],
115 []
116 )
117);
118
119pub(crate) mod fake {
120 pub fn get_true(ext: &str, mode: &str) -> Option<String> {
121 if ext == "m"
122 || ext == "mm"
123 || mode == "objc"
124 || mode == "objc++"
125 || mode == "objective-c++"
126 || mode == "objective-c"
127 {
128 Some("obj-c/c++".to_string())
129 } else {
130 None
131 }
132 }
133}