-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
GeneratorManager.py
35 lines (24 loc) · 1.04 KB
/
GeneratorManager.py
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
from PZEDGlobals import WantDeprecated
from typing import TYPE_CHECKING, Type
if TYPE_CHECKING:
from generators.BaseGenerator import BaseGenerator
generators: dict[str, Type["BaseGenerator"]] = {}
def getGeneratorType(extension: str) -> Type["BaseGenerator"]:
try:
return generators[extension]
except KeyError:
raise Exception("No generator found for extension ." + extension)
def getGenerator(extension: str, wantDeprecated: WantDeprecated) -> "BaseGenerator":
generatorType = getGeneratorType(extension)
if not generatorType:
raise Exception("Failed to create generator")
return generatorType(wantDeprecated)
def registerGenerator(generatorType: Type["BaseGenerator"], extensions: list[str]):
"""
Registers a class as the generator for a file extension
:param generatorType: The class to handle these extensions with
:param extensions: List of file extensions to register this generator for
:return:
"""
for extension in extensions:
generators[extension] = generatorType