mk_share.py 1.7 KB

1234567891011121314151617181920212223242526272829
  1. # -*- coding: utf-8 -*-
  2. """从本地版 仿真集成台.html 后处理出分享版: 仿真入口去掉本机链接, 改标"本机离线运行"。
  3. 单一内容源 = 仿真集成台.html; 本脚本只做出口转换, 不改内容。"""
  4. import re, pathlib
  5. _SIM = pathlib.Path(__file__).resolve().parents[2] / "outputs/rudong/windscada/_demo/sim"
  6. src = pathlib.Path(_SIM/"仿真集成台.html").read_text(encoding="utf-8")
  7. assert ".sim.nolink{cursor:default}" in src, "基础 HTML 缺 nolink 样式 — 先跑 _build_hub.py"
  8. n_before = src.count('<a class="sim" href=')
  9. # <a class="sim" href="..."> -> <div class="sim nolink"> / </a> -> </div>
  10. def conv(m):
  11. body = m.group(2)
  12. body = body.replace('</div></a>', '</div></div>')
  13. body = re.sub(r'(<div class="sim-m">)([^<]*)(</div>)', r'\1\2 · 本机离线运行\3', body)
  14. return '<div class="sim nolink">' + body
  15. out = re.sub(r'<a class="sim" href="[^"]*" target="_blank">(\s*)(.*?)</a>',
  16. lambda m: conv(m), src, flags=re.S)
  17. out = out.replace('<div class="r">离线运行 · 无需网络</div>',
  18. '<div class="r">内容与本机离线系统同源</div>')
  19. out = out.replace('本页内所有链接指向本机服务与本地文件',
  20. '本页为分享版:仿真入口在本机离线系统内运行,此处列清单不外链')
  21. n_after = out.count('<a class="sim" href=')
  22. pathlib.Path(_SIM/"仿真集成台_分享版.html").write_text(out, encoding="utf-8")
  23. print(f"本机链接 {n_before} 个 -> 转换后剩 {n_after} 个")
  24. print("nolink 卡片:", out.count('class="sim nolink"'))
  25. assert n_after == 0, "仍有本机链接残留"
  26. assert out.count('class="sim nolink"') == n_before, "卡片数量对不上"
  27. print("OK 分享版已生成")