[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/")
else:
prop_obj = PropStrings(prop_name)
for prop in prop_value.split('",'):
prop = prop.replace('"', "")
prop = prop.strip()
if len(prop) > 0:
expect_open = True
in_prop = False
prop = ''
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)
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:
curnode.append(prop_obj)

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

Loading…
Cancel
Save