__all__ = ['clean_html']

def clean_html(html: str) -> str:
    """HTML フラグメントをプレーンテキストに変換する。

    lxml.html の HTML パーサをベースに、テーブル構造を
    タブ/改行で保持する。

    変換ルール:
        - ``<br>``, ``<br/>`` → 改行
        - ``<p>`` → 改行
        - ``<td>``, ``<th>``（同一行の 2 番目以降）→ タブ区切り
        - ``<tr>`` → 改行
        - ``<table>`` → 改行
        - ``<img>``, ``<svg>``, ``<style>``, ``<script>`` → 除去
        - 連続する空行 → 1 つの空行に正規化
        - 先頭・末尾の空白 → strip

    Args:
        html: HTML フラグメント文字列。

    Returns:
        プレーンテキスト。空の入力には空文字列を返す。
    """
