92 lines
2.7 KiB
Python
92 lines
2.7 KiB
Python
"""Волна N+38: vfbuild57 — 9 EF-сайтов в auk.java (2 метода, 5 лямбд).
|
|
Запуск: python3 tools/waves_n38.py"""
|
|
|
|
import os, sys
|
|
|
|
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
p = os.path.join(ROOT, "src/main/java/defpackage/auk.java")
|
|
L = open(p, encoding="utf-8", errors="replace").read().splitlines()
|
|
ok = True
|
|
|
|
|
|
def edit(ln, old, new):
|
|
global ok
|
|
i = ln - 1
|
|
if i < len(L) and old in L[i]:
|
|
L[i] = L[i].replace(old, new, 1)
|
|
elif i < len(L) and new in L[i]:
|
|
pass
|
|
else:
|
|
ok = False
|
|
print(f"MISS {ln}: {old!r} got {(L[i] if i < len(L) else '<oob>').strip()!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].strip() in "\n".join(L[max(0, ip - 8) : 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()[:60]!r} next={L[ip].strip()[:60]!r}"
|
|
)
|
|
|
|
|
|
# edits first (descending)
|
|
edit(
|
|
247,
|
|
"var4xx.start.add(var6), var4xx.end.add(var6)",
|
|
"var4xx.start.add(var6f), var4xx.end.add(var6f)",
|
|
)
|
|
edit(244, "var5xx.move(var6),", "var5xx.move(var6f),")
|
|
edit(237, "var1x.boxes.equals(var7)", "var1x.boxes.equals(var7f)")
|
|
edit(152, "vertexQuad(var1, var9,", "vertexQuad(var1g, var9,")
|
|
edit(135, "vertexQuad(var1, var10,", "vertexQuad(var1f, var10,")
|
|
edit(125, "arj.draw(var3, var3x);", "arj.draw(var3g, var3x);")
|
|
edit(97, "arj.begin(var3);", "arj.begin(var3g);")
|
|
edit(81, "arj.draw(var3, var3x);", "arj.draw(var3f, var3x);")
|
|
edit(54, "arj.begin(var3);", "arj.begin(var3f);")
|
|
|
|
# inserts (descending); f/g suffixes because case groups share switch scope
|
|
insert_before(
|
|
236,
|
|
"var7 = var1.toAabbs();",
|
|
"SHAPE_OUTLINES.stream()",
|
|
["final List var7f = var7;", "final Vec3 var6f = var6;"],
|
|
)
|
|
insert_before(
|
|
152,
|
|
"BufferBuilder var9 = arj.begin(var5);",
|
|
"QUAD.forEach(var2x -> vertexQuad(var1g, var9,",
|
|
["final Pose var1g = var1;"],
|
|
)
|
|
insert_before(
|
|
135,
|
|
"BufferBuilder var10 = arj.begin(var6);",
|
|
"QUAD_DEPTH.forEach(var2x -> vertexQuad(var1f, var10,",
|
|
["final Pose var1f = var1;"],
|
|
)
|
|
insert_before(
|
|
96,
|
|
"var3 = arj.lines();",
|
|
"var2.forEach(var2x -> {",
|
|
["final RenderType var3g = var3;"],
|
|
)
|
|
insert_before(
|
|
53,
|
|
"var3 = arj.linesDepthNoWrite();",
|
|
"var2.forEach(var2x -> {",
|
|
["final RenderType var3f = var3;"],
|
|
)
|
|
|
|
open(p, "w", encoding="utf-8").write("\n".join(L) + "\n")
|
|
print("OK" if ok else "PROBLEMS")
|
|
sys.exit(0 if ok else 1)
|