plugin system

This commit is contained in:
randogoth 2025-10-20 15:03:34 +03:00
parent 1c69a01aa6
commit 03cab97dac
7 changed files with 599 additions and 251 deletions

34
plugins.py Normal file
View file

@ -0,0 +1,34 @@
from __future__ import annotations
from typing import Any
from conversion_core import ParserFactory, RendererFactory
from plugin_registry import PluginRegistry
parser_plugins = PluginRegistry[ParserFactory]()
renderer_plugins = PluginRegistry[RendererFactory[Any]]()
def register_parser(name: str, factory: ParserFactory) -> None:
parser_plugins.register(name, factory)
def register_renderer(name: str, factory: RendererFactory[Any]) -> None:
renderer_plugins.register(name, factory)
def get_parser_factory(name: str) -> ParserFactory:
return parser_plugins.get(name)
def get_renderer_factory(name: str) -> RendererFactory[Any]:
return renderer_plugins.get(name)
def available_parsers() -> list[str]:
return parser_plugins.names()
def available_renderers() -> list[str]:
return renderer_plugins.names()