Files
Pascal MichelandClaude Opus 5.5 fa1c26b407 Erste Fassung: Claude-Werkzeuge aus dem Vault
.vault-tools (ohne trading-plattform-pruefung und watermarks-remover),
.claude/agents, .claude/skills, .claude/workflows, .claude/settings.json.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 11:27:59 +02:00

32 lines
1.2 KiB
Python

"""Ersetzt in EINER Zeile einer Datei bestimmte echte Zeichen durch ihre sechs ASCII-Zeichen lange Escape-Folge.
Arbeitet mit Codepunkten; im eigenen Quelltext steht keine Escape-Folge, die eine Schicht auswerten koennte.
Aufruf: python plan_escape.py <datei> <zeilennummer> <codepunkt-hex> [<codepunkt-hex> ...]
Beispiel: python plan_escape.py task-107.md 311 2122 0441
Exit 0, wenn mindestens ein Zeichen ersetzt wurde; 2, wenn die Zeile keines der Zeichen traegt.
"""
import sys
from pathlib import Path
datei = Path(sys.argv[1])
nummer = int(sys.argv[2])
punkte = [int(p, 16) for p in sys.argv[3:]]
text = datei.read_bytes().decode("utf-8")
zeilen = text.split("\n")
zeile = zeilen[nummer - 1]
ersetzt = 0
for punkt in punkte:
zeichen = chr(punkt)
folge = chr(92) + "u" + format(punkt, "04x")
ersetzt += zeile.count(zeichen)
zeile = zeile.replace(zeichen, folge)
if ersetzt == 0:
print(f"BEFUND: Zeile {nummer} traegt keines der Zeichen -- nichts geaendert: {zeilen[nummer - 1][:100]!r}")
sys.exit(2)
zeilen[nummer - 1] = zeile
with open(datei, "w", encoding="utf-8", newline="") as strom:
strom.write("\n".join(zeilen))
print(f"{ersetzt} Zeichen ersetzt in Zeile {nummer}: {zeile.strip()[:140]}")