[python] Update "fdt" py-module

pull/24/head
remittor 1 year ago
parent 897c90c097
commit b284449f32

@ -509,11 +509,29 @@ def parse_dts(text: str, root_dir: str = '') -> FDT:
raise NotImplementedError("Not implemented property value: /bits/") raise NotImplementedError("Not implemented property value: /bits/")
else: else:
prop_obj = PropStrings(prop_name) prop_obj = PropStrings(prop_name)
for prop in prop_value.split('",'): expect_open = True
prop = prop.replace('"', "") in_prop = False
prop = prop.strip() prop = ''
if len(prop) > 0: for c in prop_value:
if c == '"' and not in_prop and expect_open:
prop = ''
in_prop = True
elif c == '"' and in_prop:
if not len(prop) > 0:
raise ValueError('Empty string')
prop_obj.append(prop) prop_obj.append(prop)
in_prop = False
expect_open = False
elif in_prop:
prop += c
elif c == ',' and not expect_open:
expect_open = True
elif c == ' ':
continue
else:
raise ValueError(f'Invalid char: {c}')
if expect_open:
raise ValueError('Expected string after ,')
if curnode is not None: if curnode is not None:
curnode.append(prop_obj) curnode.append(prop_obj)

@ -80,7 +80,7 @@ class BaseItem:
node = node.parent node = node.parent
return path if path else '/' return path if path else '/'
def __init__(self, name: str): def __init__(self, name: str, label=None):
""" """
BaseItem constructor BaseItem constructor
@ -89,7 +89,7 @@ class BaseItem:
assert isinstance(name, str) assert isinstance(name, str)
assert all(c in printable for c in name), "The value must contain just printable chars !" assert all(c in printable for c in name), "The value must contain just printable chars !"
self._name = name self._name = name
self._label = None self._label = label
self._parent = None self._parent = None
def __str__(self): def __str__(self):
@ -522,14 +522,14 @@ class Node(BaseItem):
def empty(self): def empty(self):
return False if self.nodes or self.props else True return False if self.nodes or self.props else True
def __init__(self, name, *args): def __init__(self, name, *args, label=None):
""" """
Node constructor Node constructor
:param name: Node name :param name: Node name
:param args: List of properties and subnodes :param args: List of properties and subnodes
""" """
super().__init__(name) super().__init__(name, label=label)
self._props = [] self._props = []
self._nodes = [] self._nodes = []
for item in args: for item in args:
@ -557,7 +557,7 @@ class Node(BaseItem):
def copy(self): def copy(self):
""" Create a copy of Node object """ """ Create a copy of Node object """
node = Node(self.name) node = Node(self.name, label=self.label)
for p in self.props: for p in self.props:
node.append(p.copy()) node.append(p.copy())
for n in self.nodes: for n in self.nodes:

Loading…
Cancel
Save