26 lines
721 B
Python
26 lines
721 B
Python
"""Registry for city/source parser implementations."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from openmensa_parsers.parsers.base import OpenMensaParser
|
|
from openmensa_parsers.parsers.potsdam import PotsdamParser
|
|
|
|
|
|
PARSER_CLASSES: dict[str, type[OpenMensaParser]] = {
|
|
PotsdamParser.id: PotsdamParser,
|
|
}
|
|
|
|
|
|
def get_parser_class(parser_id: str) -> type[OpenMensaParser]:
|
|
try:
|
|
return PARSER_CLASSES[parser_id]
|
|
except KeyError as exc:
|
|
configured = ", ".join(sorted(PARSER_CLASSES))
|
|
raise KeyError(
|
|
f"Unknown parser {parser_id!r}; configured parsers: {configured}"
|
|
) from exc
|
|
|
|
|
|
def create_parser(parser_id: str) -> OpenMensaParser:
|
|
return get_parser_class(parser_id)()
|