32 lines
919 B
Python
32 lines
919 B
Python
from dataclasses import dataclass
|
|
|
|
from myfasthtml.core.dsl.base_completion import BaseCompletionEngine
|
|
from myfasthtml.core.formatting.dsl.parser import DSLParser
|
|
|
|
|
|
@dataclass
|
|
class DslDefinition:
|
|
completion: BaseCompletionEngine
|
|
validation: DSLParser # To do, this parser is not generic (specific to the Formatting DSL)
|
|
|
|
|
|
class DslsManager:
|
|
dsls: dict[str, DslDefinition] = {}
|
|
|
|
@staticmethod
|
|
def register(completion: BaseCompletionEngine, validation: DSLParser):
|
|
# then engine_id is actually the DSL id
|
|
DslsManager.dsls[completion.get_id()] = DslDefinition(completion, validation)
|
|
|
|
@staticmethod
|
|
def get_completion_engine(engine_id) -> BaseCompletionEngine:
|
|
return DslsManager.dsls[engine_id].completion
|
|
|
|
@staticmethod
|
|
def get_validation_parser(engine_id) -> DSLParser:
|
|
return DslsManager.dsls[engine_id].validation
|
|
|
|
@staticmethod
|
|
def reset():
|
|
DslsManager.dsls = {}
|