tampermonkey/py/split.py
2026-08-15 19:12:05 +03:00

53 lines
2.0 KiB
Python

#!/usr/bin/env python3
"""Разбивает src/all.js на несколько файлов по заданным диапазонам строк.
Диапазоны указаны как (start, end) включительно, в порядке добавления.
Файлы создаются в src/, затем удаляется исходный src/all.js.
"""
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
SRC = os.path.join(BASE_DIR, "src")
SOURCE = os.path.join(SRC, "all.js")
# (filename, [(start, end), ...])
PLAN = [
("00-config.js", [(1, 72)]),
("10-dom.js", [(74, 122)]),
("20-property.js", [(124, 239)]),
("30-utils.js", [(241, 302), (601, 626), (899, 922)]),
("40-api.js", [(304, 363)]),
("50-common-ui.js", [(365, 382), (462, 469), (924, 999), (1149, 1259), (1261, 1265), (1627, 1642)]),
("60-cp-files.js", [(471, 599), (628, 858), (1131, 1147)]),
("70-cp-edit.js", [(384, 460), (862, 897), (1001, 1129), (1320, 1443), (1445, 1625), (1644, 2103)]),
("75-map.js", [(1267, 1285), (2105, 2128)]),
("80-route-build.js", [(2130, 2386)]),
("90-route-edit.js", [(2388, 2555)]),
("100-route-stages.js", [(1287, 1318), (2557, 2614)]),
("110-main.js", [(2616, 2821)]),
]
def main():
with open(SOURCE, "r", encoding="utf-8") as f:
lines = f.readlines()
total = len(lines)
for name, ranges in PLAN:
parts = []
for start, end in ranges:
if start < 1 or end > total or start > end:
raise ValueError(
"{}: неверный диапазон {}-{} (всего строк {})".format(name, start, end, total)
)
parts.append("".join(lines[start - 1:end]))
content = "\n".join(parts).rstrip("\n") + "\n"
path = os.path.join(SRC, name)
with open(path, "w", encoding="utf-8") as f:
f.write(content)
print("OK {} (строк в файле: {})".format(name, content.count("\n")))
if __name__ == "__main__":
main()