"""
文本分句工具

将长文本按句子拆分，用于 TTS 流水线分句合成。
"""

import re
from typing import List


def split_sentences(text: str, max_length: int = 80) -> List[str]:
    """
    将文本按句子拆分

    切分优先级：
    1. 中文句末标点（。！？）和换行符
    2. 分号、冒号处二次切分（过长段落）
    3. 逗号处三次切分（仍然过长）

    Args:
        text: 输入文本
        max_length: 单句最大字符数

    Returns:
        句子列表（已过滤空串）
    """
    if not text or not text.strip():
        return []

    text = text.strip()

    # 第一级：按句末标点和换行切分
    segments = re.split(r'(?<=[。！？\n])', text)
    segments = [s.strip() for s in segments if s.strip()]

    # 第二级：对过长段落在分号/冒号处二次切分
    refined = []
    for seg in segments:
        if len(seg) <= max_length:
            refined.append(seg)
        else:
            parts = re.split(r'(?<=[；;：:])', seg)
            parts = [p.strip() for p in parts if p.strip()]
            refined.extend(parts)

    # 第三级：对仍然过长的段落在逗号处三次切分
    result = []
    for seg in refined:
        if len(seg) <= max_length:
            result.append(seg)
        else:
            parts = re.split(r'(?<=[，,])', seg)
            parts = [p.strip() for p in parts if p.strip()]
            result.extend(parts)

    return result
