Skip to content

Commit a0ee54b

Browse files
authored
Merge pull request #260 from gerlero/files
Improve serialization
2 parents da61c10 + ba5dc1b commit a0ee54b

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

foamlib/_files/_serialization.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,16 @@ def normalize(
7575
if isinstance(data, str):
7676
data = data.strip()
7777

78+
if data.startswith("(") and data.endswith(")"):
79+
data = data[1:-1].split()
80+
if kind == Kind.KEYWORD:
81+
return "(" + " ".join(data) + ")"
82+
return [normalize(d, kind=Kind.SINGLE_ENTRY) for d in data]
83+
84+
if data.startswith("[") and data.endswith("]"):
85+
data = data[1:-1].split()
86+
return normalize(data, kind=Kind.DIMENSIONS)
87+
7888
with contextlib.suppress(ValueError):
7989
return int(data)
8090

@@ -122,12 +132,15 @@ def dumps(
122132
if isinstance(data, Mapping):
123133
entries = []
124134
for k, v in data.items():
125-
if isinstance(v, Mapping):
126-
entries.append(dumps(k) + b" {" + dumps(v) + b"}")
127-
elif not v:
128-
entries.append(dumps(k) + b";")
135+
value = normalize(v)
136+
if isinstance(value, Mapping):
137+
entries.append(
138+
dumps(k, kind=Kind.KEYWORD) + b" {" + dumps(value) + b"}"
139+
)
140+
elif not value:
141+
entries.append(dumps(k, kind=Kind.KEYWORD) + b";")
129142
else:
130-
entries.append(dumps(k) + b" " + dumps(v) + b";")
143+
entries.append(dumps(k, kind=Kind.KEYWORD) + b" " + dumps(value) + b";")
131144

132145
return b" ".join(entries)
133146

0 commit comments

Comments
 (0)