Source code for tools.printers.printerRegistry


"""
.. module:: printerRegistry
   :synopsis: A facility where all printers should register,
   for the masterPrinter to access them

.. moduleauthor:: Wolfgang Waltenberger <wolfgang.waltenberger@gmail.com>

"""

from smodels.tools.printers.basicPrinter import BasicPrinter
from typing import Optional

[docs]class PrinterRegistry: """ Facility for all printers to register """ printers = {}
[docs] @classmethod def register(cls, printer : type[BasicPrinter], extension : str ) -> bool: """ register this printer :param printer: Printer object to register :param extension: Extension this printer will be in charge of :returns: False if printer already exists (or other error), else True """ if extension in cls.printers: return False cls.printers[extension] = printer return True
[docs] @classmethod def has(cls, extension : str ) -> bool: """ check if a printer is registered for given extensions """ return extension in cls.printers
[docs] @classmethod def get(cls, extension : str ) -> Optional[BasicPrinter]: """ get the printer that serves a specific extension :returns: None, if no printer registered for that extension """ if not extension in cls.printers: return None return cls.printers[extension]