Taiga Develop il y a 3 semaines
Parent
commit
14312833a8
6 fichiers modifiés avec 105 ajouts et 0 suppressions
  1. 1 0
      source/__init__.py
  2. 0 0
      source/decoder.py
  3. 0 0
      source/encoder.py
  4. 76 0
      source/message.py
  5. 12 0
      source/protocol.py
  6. 16 0
      tests/000-default.py

+ 1 - 0
source/__init__.py

@@ -0,0 +1 @@
+from .protocol import protocol

+ 0 - 0
source/decoder.py


+ 0 - 0
source/encoder.py


+ 76 - 0
source/message.py

@@ -0,0 +1,76 @@
+import types
+#from types import MappingProxyType
+
+class message:
+    def __init__(self, default: dict, sections: dict) -> None:
+        sections_proxy = dict()
+
+        for key, value in sections.items():
+            sections_proxy[key] = types.MappingProxyType(value)
+
+        self.__sections = types.MappingProxyType(sections_proxy
+        self.__default = types.MappingProxyType(default)
+
+    def get_key(self, key: str, section: str | None = None) -> str:
+        if section is None:
+            return self.get_from_default(key)
+
+        return self.get_from_section(section, key)
+
+    def get_from_default(self, key: str) -> any:
+        return self.__default[key]
+
+    def get_from_sections(self, section: str, key: str) -> any:
+        return self.__sections[section][key]
+
+    @property
+    def default(self) -> types.MappingProxyType:
+        return self.__default
+
+    @property
+    def sections(self) -> types.MappingProxyType:
+        return self.__sections
+
+class message_builder:
+    def __init__(self) -> None:
+        self.__sections = dict()
+        self.__default = dict()
+
+    def __add_section(self, section: str) -> object:
+        if not section in self.__content.keys():
+            selt.__sections[section] = dict()
+
+    def __set_section_key(self, section: str, key: str, value: str) -> None:
+        self.__sections[section][key] = value
+
+    def __set_default_key(self, key: str, value: str) -> None:
+        self.__default[key] = value
+
+    def set_key(
+        self, 
+        key: str, 
+        value: any, 
+        section: str | None = None
+    ) -> object:
+        key = key.strip()
+        value = str(value).strip()
+
+        if len(key) == 0:
+            raise RuntimeError("Key nam can nob being empty.")
+
+        if section is None:
+            self.__set_default_key(key, value)
+            return self
+
+        section = section.strip()
+        
+        if len(section) == 0:
+            raise RuntimeError("Section name can not being empty.")
+
+        self.__add_section(section)
+        self.__set_section_key(section, key, value)
+
+        return self
+
+    def build(self) -> message:
+        return message(self.__default, self.__sections)

+ 12 - 0
source/protocol.py

@@ -0,0 +1,12 @@
+class protocol: 
+    @staticmethod
+    def line_separator() -> str:
+        return str("\n")
+
+    @staticmethod
+    def setter() -> str:
+        return str("=")
+
+    @staticmethod
+    def section_buckles() -> [str, str]:
+        return ("[", "]")

+ 16 - 0
tests/000-default.py

@@ -0,0 +1,16 @@
+import pathlib
+
+test_file = pathlib.Path(__file__)
+test_dir = test_file.parent
+project_dir = test_dir.parent
+
+import sys
+sys.path.append(str(project_dir.absolute()))
+
+import source as communication
+
+def main():
+    print(communication.protocol.setter())
+
+if __name__ == "__main__":
+    main()