53 lines
2.0 KiB
Python
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() |