#!/usr/bin/env python3 """Проверка: в .typ ПЗ нет длинного тире «—» (по чек-листу п. 29 — среднее «–»).""" from __future__ import annotations import sys from pathlib import Path ROOT = Path(__file__).resolve().parents[1] DIRS = [ROOT / "includes", ROOT / "appendices"] SKIP = {"ch05-tests-generated.typ"} EM = "\u2014" def main() -> int: bad: list[str] = [] for base in DIRS: if not base.is_dir(): continue for path in sorted(base.rglob("*.typ")): if path.name in SKIP: continue text = path.read_text(encoding="utf-8") for i, line in enumerate(text.splitlines(), 1): if EM in line and "не длинное" not in line: bad.append(f"{path.relative_to(ROOT)}:{i}: {line.strip()[:100]}") if bad: print("error: найдено длинное тире «—» (нужно среднее «–»):", file=sys.stderr) for line in bad[:40]: print(f" {line}", file=sys.stderr) if len(bad) > 40: print(f" ... и ещё {len(bad) - 40}", file=sys.stderr) return 1 print("OK: длинное тире в .typ не найдено") return 0 if __name__ == "__main__": raise SystemExit(main())