evo/tools/waves_n41.py

75 lines
2 KiB
Python

"""Волна N+41: vfbuild73 — 16 EF в ts.java (submitFlakes).
Запуск: python3 tools/waves_n41.py"""
import os, re, sys
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
p = os.path.join(ROOT, "src/main/java/defpackage/ts.java")
L = open(p, encoding="utf-8", errors="replace").read().splitlines()
ok = True
def edit(ln, *names):
global ok
i = ln - 1
new = L[i]
for name in names:
new = re.sub(rf"\b{name}\b", name + "f", new)
if new != L[i]:
L[i] = new
else:
ok = False
print(f"MISS {ln}: none of {names} in {L[i].strip()[:90]!r}")
def insert_before(ln, anchor_prev, anchor_next, decls):
global ok
ip = ln - 1
prev_ok = anchor_prev in L[ip - 1]
next_ok = anchor_next in L[ip]
done = decls[0] in "\n".join(L[max(0, ip - 12) : ip + 8])
if prev_ok and next_ok and not done:
line = L[ip]
indent = line[: len(line) - len(line.lstrip())]
L[ip:ip] = [indent + d for d in decls]
elif done:
pass
else:
ok = False
print(
f"INSERT-MISS {ln}: prev={L[ip - 1].strip()[:70]!r} next={L[ip].strip()[:70]!r}"
)
# edits first (descending)
edit(1226, "var7")
edit(1222, "var6")
edit(1212, "var10", "var11", "var12")
edit(1180, "var13", "var14")
edit(1179, "var13", "var15")
edit(1178, "var14", "var15")
edit(1155, "var16")
edit(1125, "var15")
edit(1124, "var14")
edit(1123, "var13")
insert_before(
1069,
"var16 = this.flakeCount;",
"var1.submitCustomGeometry(var2, arj.positionColorDepthNoWrite(), (var12x, var13x) -> {",
[
"final float var6f = var6;",
"final float var7f = var7;",
"final float var10f = var10;",
"final float var11f = var11;",
"final float var12f = var12;",
"final float var13f = var13;",
"final float var14f = var14;",
"final float var15f = var15;",
"final int var16f = var16;",
],
)
open(p, "w", encoding="utf-8").write("\n".join(L) + "\n")
print("OK" if ok else "PROBLEMS")
sys.exit(0 if ok else 1)