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
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-26 14:20 +0800
1from __future__ import annotations
3from typing import Any
6def _is_blank_row(row: list[Any]) -> bool:
7 return all(c is None or str(c).strip() == "" for c in row)
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