@@ -628,8 +628,8 @@ def insert_block(line: Line, upper: list[Any], row: int, column: int) -> int:
628628
629629 node_group_rex = re .compile (r"[^A-Za-z]*([A-Za-z]*)[^A-Za-z]*" )
630630
631- def rename_lines (self ) -> LineSet :
632- def get_floor (line : Line ) -> tuple [int , list [ str ] ]:
631+ def rename_lines (self ) -> LineSet :
632+ def get_floor (line : Line ) -> tuple [int , str ]:
633633 upper_lines = self .get_upper_connected_lines (line .upper_node )
634634
635635 if len (upper_lines ) < 1 :
@@ -638,7 +638,7 @@ def get_floor(line: Line) -> tuple[int, list[str]]:
638638 node_group = self .node_group_rex .match (line .upper_node .name )
639639 if node_group :
640640 prefix_name = node_group .group (1 )
641- return 1 , [ prefix_name ]
641+ return 0 , prefix_name
642642
643643 upper_lines_floors = [get_floor (l ) for l in upper_lines ]
644644 floor = max ([x [0 ] for x in upper_lines_floors ]) + 1
@@ -650,20 +650,31 @@ def get_floor(line: Line) -> tuple[int, list[str]]:
650650 prefix_lst = list (prefixes )
651651 prefix_lst .sort ()
652652
653- return floor , prefix_lst
653+ return floor , "" .join (prefix_lst )
654+
655+ if not self .lines :
656+ return self
654657
655- lines_by_prefix : dict [str , list [Line ]] = {}
658+ lines_by_floor : dict [int , dict [str , list [Line ]]] = {}
659+
656660 for line in self .lines :
657661 floor , prefixes = get_floor (line )
658- prefix = f"{ floor } _{ '' .join (prefixes )} "
659662
660- lines_by_prefix .setdefault (prefix , [])
661- lines_by_prefix [prefix ].append (line )
663+ lines_by_floor .setdefault (floor , {})
664+ lines_by_floor [floor ].setdefault (prefixes , [])
665+
666+ lines_by_floor [floor ][prefixes ].append (line )
667+
668+ for prefix , lines in lines_by_floor .get (0 , {}).items ():
669+ for line in lines :
670+ line .name = f"1_{ line .upper_node .name } "
671+
672+ for floor in range (max (lines_by_floor )):
673+ for prefix , lines in lines_by_floor .get (floor , {}).items ():
674+ lines_sorted = self .sort_lines (lines , by_names = True )
662675
663- for prefix , lines in lines_by_prefix .items ():
664- lines_sorted = self .sort_lines (lines )
665- for i , line in enumerate (lines_sorted ):
666- line .name = f"{ prefix } { i + 1 :02d} "
676+ for i , line in enumerate (lines_sorted ):
677+ line .name = f"{ floor + 1 } _{ prefix } { i + 1 } "
667678
668679 return self
669680
0 commit comments