@@ -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