| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- from .template import template
- from .message import message
- from .message_builder import message_builder
- class builder_template(message_builder):
- def __init__(self, result_type: type) -> None:
- super().__init__()
- self.__required = set()
- self.__result_type = result_type
- def _import_template(self, target: template) -> None:
- default_keys = target.default_keys
- for key in default_keys:
- name = "set_" + key
- setattr(self, name, self._create_setter(key))
- for section in target.sections_names:
- for key in target.get_section_keys(section):
- name = "set_" + key
- if name in default_keys:
- name = "set_" + key + "_" + section
- setattr(self, name, self._create_setter(key, section))
- def __create_setter_name(self, key: str, section: str | None) -> str:
- if section is None:
- return "kn_" + key
-
- return "ks_" + key + section
- def _set_required_key(
- self,
- key: str,
- target: str,
- section: str | None
- ) -> object:
- name = self.__create_setter_name(key, section)
- if not name in self.__required:
- raise RuntimeError("Key " + key + " had been already set.")
- self.__required.remove(name)
- return self.set_key(key, target, section)
- def _create_setter(self, key: str, section: str | None = None) -> object:
- self.__required.add(self.__create_setter_name(key, section))
- return lambda target: self._set_required_key(key, target, section)
- def build(self) -> message:
- if len(self.__required) > 0:
- raise RuntimeError("One or more required keys are not set.")
- return super().build(help_type = self.__result_type)
|