Coverage for src\genesis\parsers\paragraph_splitter.py: 100%

17 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-26 14:20 +0800

1from __future__ import annotations 

2 

3from typing import Any 

4 

5 

6def _is_blank_row(row: list[Any]) -> bool: 

7 return all(c is None or str(c).strip() == "" for c in row) 

8 

9 

10def split_paragraphs(matrix: list[list[Any]]) -> list[tuple[int, int]]: 

11 """以全空行为界的通用段落分割;返回 (start_row, end_row)(含端,0-based)。""" 

12 paragraphs: list[tuple[int, int]] = [] 

13 start: int | None = None 

14 for i, row in enumerate(matrix): 

15 if not _is_blank_row(row): 

16 if start is None: 

17 start = i 

18 else: 

19 if start is not None: 

20 paragraphs.append((start, i - 1)) 

21 start = None 

22 if start is not None: 

23 paragraphs.append((start, len(matrix) - 1)) 

24 return paragraphs