-
Notifications
You must be signed in to change notification settings - Fork 86
/
Copy pathparse-engine-registry.ts
33 lines (26 loc) · 1.14 KB
/
parse-engine-registry.ts
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
import ParseEngine from './common/parse-engine';
import CssParseEngine from './types/css-parse-engine';
import HtmlParseEngine from './types/html-parse-engine';
import JsParseEngine from './types/js-parse-engine';
class ParseEngineRegistry {
private static _supportedLanguagesIds: string[];
private static _registry: ParseEngine[] = [
new CssParseEngine(),
new HtmlParseEngine(),
new JsParseEngine()
];
public static get supportedLanguagesIds(): string[] {
if (!ParseEngineRegistry._supportedLanguagesIds) {
ParseEngineRegistry._supportedLanguagesIds = ParseEngineRegistry._registry.map(parseEngine => parseEngine.languageId);
}
return ParseEngineRegistry._supportedLanguagesIds;
}
public static getParseEngine(languageId: string): ParseEngine {
let foundParseEngine = ParseEngineRegistry._registry.find(value => value.languageId === languageId);
if (!foundParseEngine) {
throw `Could not find a parse engine for the provided language id ("${languageId}").`;
}
return foundParseEngine;
}
}
export default ParseEngineRegistry;