@@ -27,7 +27,7 @@ def get_level_block(text, level_content_list, level_content_index, cursor):
27
27
level_content_list ) else None
28
28
start_index = text .index (start_content , cursor )
29
29
end_index = text .index (next_content , start_index + 1 ) if next_content is not None else len (text )
30
- return text [start_index + len (start_content ):end_index ], end_index
30
+ return text [start_index + len (start_content ):end_index ], end_index
31
31
32
32
33
33
def to_tree_obj (content , state = 'title' ):
@@ -303,17 +303,20 @@ def parse_to_tree(self, text: str, index=0):
303
303
level_content_list .insert (0 , to_tree_obj ("" ))
304
304
305
305
cursor = 0
306
- for i in range (len (level_content_list )):
307
- block , cursor = get_level_block (text , level_content_list , i , cursor )
306
+ level_title_content_list = [item for item in level_content_list if item .get ('state' ) == 'title' ]
307
+ for i in range (len (level_title_content_list )):
308
+ start_content : str = level_title_content_list [i ].get ('content' )
309
+ if cursor < text .index (start_content , cursor ):
310
+ level_content_list .insert (0 , to_tree_obj (text [cursor : text .index (start_content , cursor )], 'block' ))
311
+ block , cursor = get_level_block (text , level_title_content_list , i , cursor )
308
312
if len (block ) == 0 :
309
- level_content_list [i ]['children' ] = [to_tree_obj ("" , "block" )]
310
313
continue
311
314
children = self .parse_to_tree (text = block , index = index + 1 )
312
- level_content_list [i ]['children' ] = children
315
+ level_title_content_list [i ]['children' ] = children
313
316
first_child_idx_in_block = block .lstrip ().index (children [0 ]["content" ].lstrip ())
314
317
if first_child_idx_in_block != 0 :
315
318
inner_children = self .parse_to_tree (block [:first_child_idx_in_block ], index + 1 )
316
- level_content_list [i ]['children' ].extend (inner_children )
319
+ level_title_content_list [i ]['children' ].extend (inner_children )
317
320
return level_content_list
318
321
319
322
def parse (self , text : str ):
0 commit comments