"""Волна 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 '').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)