@@ -808,6 +808,7 @@ def to_string(self, level=0, indent=4, eol='\n', pretty=True, max_chars=80):
808
808
obj_key = NAME_TO_KEY [self .__class__ .__name__ ]
809
809
for key in INFO [obj_key ]: # this sets the order of the keys! nice.
810
810
if key in self :
811
+ index += 1
811
812
string += "{eol}{indent}{key}=" .format (
812
813
eol = eol ,
813
814
indent = ' ' * indent * (level + 1 ),
@@ -819,16 +820,40 @@ def to_string(self, level=0, indent=4, eol='\n', pretty=True, max_chars=80):
819
820
pretty = pretty ,
820
821
max_chars = max_chars )
821
822
except AttributeError :
822
- val = repr (self [key ])
823
- val_chars = max_chars - (indent * (level + 1 )) - (len (key )+ 1 )
824
- if pretty and (len (val ) > val_chars ):
825
- string += val [:val_chars - 5 ] + '...' + val [- 1 ]
826
- else :
827
- string += val
828
- if index < len (self ) - 1 :
823
+ if pretty : # curtail representation if too many chars
824
+ max_len = (max_chars -
825
+ indent * (level + 1 ) -
826
+ len (key + "=" ) -
827
+ len (eol ))
828
+ if index < len (self ):
829
+ max_len -= len (',' ) # remember the comma!
830
+ if isinstance (self [key ], list ):
831
+ s = "[]"
832
+ for iii , entry in enumerate (self [key ], 1 ):
833
+ if iii < len (self [key ]):
834
+ s_sub = graph_objs_tools .curtail_val_repr (
835
+ entry ,
836
+ max_chars = max_len - len (s ),
837
+ add_delim = True
838
+ )
839
+ else :
840
+ s_sub = graph_objs_tools .curtail_val_repr (
841
+ entry ,
842
+ max_chars = max_len - len (s ),
843
+ add_delim = False
844
+ )
845
+ s = s [:- 1 ] + s_sub + s [- 1 ]
846
+ if len (s ) == max_len :
847
+ break
848
+ string += s
849
+ else :
850
+ string += graph_objs_tools .curtail_val_repr (
851
+ self [key ], max_len )
852
+ else : # they want it all!
853
+ string += repr (self [key ])
854
+ if index < len (self ):
829
855
string += ","
830
- index += 1
831
- if index == len (self ):
856
+ if index == len (self ): # TODO: extraneous...
832
857
break
833
858
string += "{eol}{indent})" .format (eol = eol , indent = ' ' * indent * level )
834
859
return string
@@ -1341,16 +1366,41 @@ def to_string(self, level=0, indent=4, eol='\n', pretty=True, max_chars=80):
1341
1366
pretty = pretty ,
1342
1367
max_chars = max_chars )
1343
1368
except AttributeError :
1344
- val = repr (self [key ])
1345
- val_chars = max_chars - (indent * (level + 1 )) - (len (key )+ 1 )
1346
- if pretty and (len (val ) > val_chars ):
1347
- string += val [:val_chars - 5 ] + '...' + val [- 1 ]
1348
- else :
1349
- string += val
1369
+ if pretty : # curtail representation if too many chars
1370
+ max_len = (max_chars -
1371
+ indent * (level + 1 ) -
1372
+ len (key + "=" ) -
1373
+ len (eol ))
1374
+ if index < len (self ):
1375
+ max_len -= len (',' ) # remember the comma!
1376
+ if isinstance (self [key ], list ):
1377
+ s = "[]"
1378
+ for iii , entry in enumerate (self [key ], 1 ):
1379
+ if iii < len (self [key ]):
1380
+ s_sub = graph_objs_tools .curtail_val_repr (
1381
+ entry ,
1382
+ max_chars = max_len - len (s ),
1383
+ add_delim = True
1384
+ )
1385
+ else :
1386
+ s_sub = graph_objs_tools .curtail_val_repr (
1387
+ entry ,
1388
+ max_chars = max_len - len (s ),
1389
+ add_delim = False
1390
+ )
1391
+ s = s [:- 1 ] + s_sub + s [- 1 ]
1392
+ if len (s ) == max_len :
1393
+ break
1394
+ string += s
1395
+ else :
1396
+ string += graph_objs_tools .curtail_val_repr (
1397
+ self [key ], max_len )
1398
+ else : # they want it all!
1399
+ string += repr (self [key ])
1350
1400
if index < len (self ) - 1 :
1351
1401
string += ","
1352
1402
index += 1
1353
- if index == len (self ):
1403
+ if index == len (self ): # TODO: extraneous...
1354
1404
break
1355
1405
left_over_keys = [key for key in self if key not in INFO [obj_key ]]
1356
1406
left_over_keys .sort ()
0 commit comments