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