Files
claude-regelwerk/.vault-tools/plan-kopie/plan_escape.py
T
Pascal MichelandClaude Opus 5 2c9a4475fc Regelwerk, Agenten, Skills und Werkzeuge veröffentlichen
Erster Stand des öffentlichen Ausschnitts aus dem Vault. Die .gitignore
arbeitet als Positivliste: ausgeschlossen ist alles, eingeschlossen nur,
was ausdrücklich wieder aufgenommen wird. Notizen, Projekte, Finanzen,
das Sitzungsgedächtnis und settings.local.json bleiben damit außen vor.

Der Kundenname in AI/Regelwerk/seo.md ist durch eine neutrale
Bezeichnung ersetzt; die Regeln selbst sind unverändert.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-17 22:38:15 +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]}")