-
Notifications
You must be signed in to change notification settings - Fork 226
Expand file tree
/
Copy pathlanguages.ts
More file actions
39 lines (36 loc) · 1.1 KB
/
languages.ts
File metadata and controls
39 lines (36 loc) · 1.1 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
import { QueryLanguage } from "../../common/query-language";
import type {
ModelsAsDataLanguage,
ModelsAsDataLanguagePredicates,
} from "./models-as-data";
import { csharp } from "./csharp";
import { java } from "./java";
import { python } from "./python";
import { ruby } from "./ruby";
const languages: Partial<Record<QueryLanguage, ModelsAsDataLanguage>> = {
[QueryLanguage.CSharp]: csharp,
[QueryLanguage.Java]: java,
[QueryLanguage.Python]: python,
[QueryLanguage.Ruby]: ruby,
};
export function getModelsAsDataLanguage(
language: QueryLanguage,
): ModelsAsDataLanguage {
const definition = languages[language];
if (!definition) {
throw new Error(`No models-as-data definition for ${language}`);
}
return definition;
}
export function getModelsAsDataLanguageModel<
T extends keyof ModelsAsDataLanguagePredicates,
>(
language: QueryLanguage,
model: T,
): NonNullable<ModelsAsDataLanguagePredicates[T]> {
const definition = getModelsAsDataLanguage(language).predicates[model];
if (!definition) {
throw new Error(`No models-as-data predicate for ${model}`);
}
return definition;
}