mirror of
https://github.com/openwrt-xiaomi/xmir-patcher.git
synced 2026-09-22 22:57:55 +03:00
[python] Update "fdt" py-module
This commit is contained in:
+22
-4
@@ -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)
|
||||
|
||||
|
||||
+5
-5
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user