Files
MARTeAutoDoc/autodoc/configdb.py
T
2026-04-21 17:46:53 +02:00

62 lines
1.7 KiB
Python

from re import search
from MARTe.StandardParser import logging
class ConfigDB:
def __new__(cls):
if not hasattr(cls, "instance"):
cls.instance = super(ConfigDB, cls).__new__(cls)
return cls.instance
def __init__(self):
ConfigDB.__INST__ = self
self.__db__ = {}
def get(self, path: str):
ipath = path.split(".")
obj = self.__db__
for p in ipath:
if p in obj:
obj = obj[p]
else:
logging.error(f"no key {p} found for {path}")
return None
return obj
def insert(self, key: dict, obj):
pass
class MARTeOBJ:
def __init__(self, fname, id, cfg):
self.__name__ = id
self.__mcls__ = cfg["Class"]
self.__struct__ = {}
for key, itm in cfg.items():
if key != "Class":
if isinstance(itm, dict) and "Class" in itm:
self.__struct__[key] = MARTeOBJ(fname, key, itm)
else:
self.__struct__[key] = itm
def pretty_print(self, spacing=""):
str = f"{spacing}{self.__name__}[{self.__mcls__}]:\n"
for key, itm in self.__struct__.items():
if isinstance(itm, MARTeOBJ):
str += itm.pretty_print(spacing + " ")
else:
str += f"{spacing} {key}: {itm}\n"
return str
def __repr__(self) -> str:
str = f"{self.__name__}[{self.__mcls__}]:\n"
for key, itm in self.__struct__.items():
str += f" {key}: {itm}\n"
return str
def parse_config(fname: str, config: dict):
for key, obj in config.items():
ConfigDB().insert(key, obj)