scripts: dts: dtlib: improve formatting of long arrays
Split long arrays into multiple lines to improve readability of the output DTS file. A new line is started when the array data exceeds 80 characters. Add a few test entries to verify the new behavior. Note: the F821 linter suppression prevents flagging 'array_start' and 'array_newline' as undefined variables. This is because these variables are initialized when an opening brace is output, which is necessarily before any element in a byte or prop array. A sequence of markers not following this pattern would indicate a bug in the DTS parsing code. Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
This commit is contained in:
parent
f26a8c0eb1
commit
0a4e2e383f
2 changed files with 14 additions and 0 deletions
|
@ -641,11 +641,16 @@ class Property:
|
|||
elif marker_type is _MarkerType.PHANDLE:
|
||||
s += " &" + ref
|
||||
pos += 4
|
||||
if pos != len(self.value) and len(s) - array_start > 80: # noqa: F821
|
||||
s += array_newline # noqa: F821
|
||||
array_start = len(s)
|
||||
# Subtle: There might be more data between the phandle and
|
||||
# the next marker, so we can't 'continue' here
|
||||
else: # marker_type is _MarkerType.UINT*
|
||||
elm_size = _TYPE_TO_N_BYTES[marker_type]
|
||||
s += _N_BYTES_TO_START_STR[elm_size]
|
||||
array_start = len(s)
|
||||
array_newline = "\n" + " " * array_start
|
||||
|
||||
while pos != end:
|
||||
num = int.from_bytes(self.value[pos:pos + elm_size],
|
||||
|
@ -656,6 +661,9 @@ class Property:
|
|||
s += f" {hex(num)}"
|
||||
|
||||
pos += elm_size
|
||||
if pos != len(self.value) and len(s) - array_start > 80:
|
||||
s += array_newline
|
||||
array_start = len(s)
|
||||
|
||||
if (pos != 0
|
||||
and (not next_marker
|
||||
|
|
|
@ -163,6 +163,8 @@ def test_cell_parsing():
|
|||
j = /bits/ 32 < 0x10 0x20 (-1) >;
|
||||
k = /bits/ 64 < 0x10 0x20 (-1) >;
|
||||
l = < 'a' 'b' 'c' >;
|
||||
m = [ 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b ];
|
||||
n = < 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 >;
|
||||
};
|
||||
""",
|
||||
"""
|
||||
|
@ -181,6 +183,10 @@ def test_cell_parsing():
|
|||
j = < 0x10 0x20 0xffffffff >;
|
||||
k = /bits/ 64 < 0x10 0x20 0xffffffffffffffff >;
|
||||
l = < 0x61 0x62 0x63 >;
|
||||
m = [ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A
|
||||
1B ];
|
||||
n = < 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10 0x11 0x12 0x13
|
||||
0x14 >;
|
||||
};
|
||||
""")
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue