message_builder.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from .message import message
  2. class message_builder:
  3. def __init__(self) -> None:
  4. self.__sections = dict()
  5. self.__default = dict()
  6. def __add_section(self, section: str) -> object:
  7. if not section in self.__sections.keys():
  8. self.__sections[section] = dict()
  9. def __set_section_key(self, section: str, key: str, value: str) -> None:
  10. self.__sections[section][key] = value
  11. def __set_default_key(self, key: str, value: str) -> None:
  12. self.__default[key] = value
  13. def set_key(
  14. self,
  15. key: str,
  16. value: str,
  17. section: str | None = None
  18. ) -> object:
  19. key = key.strip()
  20. value = value.strip()
  21. if len(key) == 0:
  22. raise RuntimeError("Key name can nob being empty.")
  23. if section is None:
  24. self.__set_default_key(key, value)
  25. return self
  26. section = section.strip()
  27. if len(section) == 0:
  28. raise RuntimeError("Section name can not being empty.")
  29. self.__add_section(section)
  30. self.__set_section_key(section, key, value)
  31. return self
  32. def build(self, help_type: type | None = None) -> message:
  33. result = message(self.__default, self.__sections)
  34. if help_type is None:
  35. return result
  36. return help_type(result)