OpenCC-compatible Chinese script conversion (simplified, traditional, Taiwan, Hong Kong, Japanese shinjitai) in pure MoonBit, with no FFI.
Dependencies
moon add Ljh684/opencc # 发布到 mooncakes 后即可这样引用// 按名字调用(会链入全部词典)
let out = @config.convert("s2twp", "内存泄漏与软件优化") // Some("記憶體洩漏與軟體最佳化")
// 只要一个方向、体积最小:import "Ljh684/opencc/config/s2twp"
let chain = @s2twp.chain()状态:开发中(WIP)。已完成:仓库骨架与 Apache-2.0 许可、上游 OpenCC 数据快照 (19 个词典 / 19 个配置 / 官方 golden 语料)、转换引擎(首字索引、嵌套词典组、归一化 → 分词 → 逐段转换)、词典生成器(tools/gen_dict:把 20 个词典共 76099 条数据编译成 内嵌文本块、复刻 OpenCC 构建期派生词典、SHA-256 校验与 --verify 幂等检查)、 CLI 与库 API。官方一致性:5/5 逐字节通过(s2t、s2hk、s2tw、s2hkp、s2twp, 用仓库内 test/fixtures/golden 语料)。moon check 无警告,38 个测试通过 (含覆盖 76099 条词典条目的全量属性测试,以及 19 个配置的回归基线)。 见下方路线图。
| 配置 | 说明 |
|---|---|
| s2t | 简体 → 繁体(通用) |
| t2s | 繁体 → 简体 |
| s2tw | 简体 → 台湾正体 |
| tw2s | 台湾正体 → 简体 |
| s2twp | 简体 → 台湾正体(含台湾用词) |
| tw2sp | 台湾正体 → 简体(含大陆用词) |
| s2hk | 简体 → 香港繁体 |
| hk2s | 香港繁体 → 简体 |
| s2hkp | 简体 → 香港繁体(含香港用词) |
| hk2sp | 香港繁体 → 简体(含大陆用词) |
| t2tw | 繁体 → 台湾正体 |
| tw2t | 台湾正体 → 繁体(通用) |
| t2hk | 繁体 → 香港繁体 |
| hk2t | 香港繁体 → 繁体(通用) |
| jp2t | 日本新字体 → 繁体 |
| t2jp | 繁体 → 日本新字体 |
| s2seal | 简体 → 篆书 |
| seal2t | 篆书 → 繁体 |
| t2seal | 繁体 → 篆书 |
# 列出全部 19 个配置(会标出引用但快照未提供的词典)
opencc list-configs
# 文本 / 文件转换;不给 -o 时结果写到 stdout
opencc -c s2twp --text "内存泄漏与软件优化" # => 記憶體洩漏與軟體最佳化
opencc convert -c s2t --input in.txt --output out.txt
# 多个 -c 按顺序串联(同上游 CLI),以及整目录批量转换
opencc -c s2t -c t2s --text "内存泄漏与软件优化"
opencc convert -c s2twp --input-dir corpus --output-dir converted --ext .txt
# 与 OpenCC 官方语料逐字节比对
opencc verify --golden test/fixtures/golden// 库:一次转换
let out = @opencc.convert("s2twp", "内存泄漏与软件优化")
// 库:复用链(构建词典索引一次,多次转换)
let chain = @opencc.chain("s2twp")moon build examples/web --target js --release # 产出可被 JS 调用的模块
node examples/web/demo.mjs # 命令行演示
python -m http.server # 再打开 examples/web/index.html 看网页 demo$ node examples/web/demo.mjs
内存泄漏与软件优化
→ TW 記憶體洩漏與軟體最佳化
→ 简 记忆体泄漏与软体最佳化
较低级别的官员由总统任命。
→ TW 較低級別的官員由總統任命。
→ 简 较低级别的官员由总统任命。| 层次 | 内容 | 命令 |
|---|---|---|
| 正确性(oracle) | OpenCC 官方 golden 语料,5 条链逐字节比对 + 往返检查 | moon run cmd/opencc --target native -- verify |
| 回归锁 | test/fixtures/regression/:19 个配置各一份基线,锁定行为不漂移(覆盖没有官方语料的另外 14 个配置) | moon test --target native |
| 数据完整性 | 20 个词典 / 76099 条目重新生成后与仓库逐字节一致,SHA-256 全部匹配 | moon run tools/gen_dict --target native -- --verify |
| 属性测试 | 76099 条词条逐条命中自身 key、分词边界、行粒度、二次转换稳定性 | moon test(四个后端) |
| 性能 | 中文密集 / ASCII 密集两个语料的吞吐 | moon run tools/bench_lookup --target native |
data/opencc/dictionary/ 19 个词典(单字、词组、地区变体、兼容汉字、篆书)
data/opencc/config/ 19 个转换配置 + schema
data/opencc/SHA256SUMS 逐文件校验和
data/opencc/REVISION 上游仓库、revision、归档哈希与选择理由
test/fixtures/golden/ 官方一致性语料(1 份输入 + 10 份期望输出)pwsh -File scripts/fetch-opencc-data.ps1 -Revision <新 revision># 1. 安装 MoonBit 工具链(Windows)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm https://cli.moonbitlang.cn/install/powershell.ps1 | iex
# 2. 安装 Git 并完成仓库初始化(写入本仓库的 user.name / user.email 并首次提交)
winget install --id Git.Git -e
pwsh -File scripts/setup-git.ps1
# 3. 编译与测试
moon check
moon test
# 4. 可选:刷新上游 OpenCC 数据快照(已在仓库内,仅升级 revision 时执行)
# pwsh -File scripts/fetch-opencc-data.ps1 -Revision <新 revision>moon.mod 模块清单
data/opencc/ 上游词典与配置快照(含 REVISION / SHA256SUMS)
core/ 词典、最长匹配、转换链(引擎核心)
config/ 19 个内置配置的定义与其转换链
dict/ 编译期词典数据模块(由 tools/gen_dict 产出)
cmd/opencc/ CLI 入口
tools/gen_dict/ 词典 → MoonBit 数据 生成器
scripts/ 环境与数据准备的 PowerShell 脚本
test/fixtures/golden/ OpenCC 官方一致性语料(验收基准)
docs/ 设计文档与验收标准| 阶段 | 目标 | 状态 |
|---|---|---|
| F1 骨架 | 仓库、Apache-2.0 许可、MoonBit 模块与三后端构建 | 已完成 |
| F2 数据快照 | 词典 / 配置 / golden 语料入库,含 revision 与逐文件 SHA-256 | 已完成 |
| F3 词典生成器 | 词典 → dict/*.mbt + manifest,--verify 幂等 | 已完成 |
| F4 索引 | 首字索引替换线性扫描,性能记录入库 | 已完成 |
| F5 官方一致性 | 配置驱动链路 + 派生词典 + 逐段转换,golden 5/5 逐字节通过 | 已完成 |
| F6 CLI 与配置覆盖 | list-configs / convert / verify,库入口 convert(name, text) | 已完成 |
| F7 数据表示 | 内嵌文本块 + 运行时建索引:native 测试 341 s → 7 s,解除 plain wasm 上限 | 已完成 |
| F8 覆盖与属性测试 | 全量条目属性测试、往返一致性检查、缺失词典台账、行粒度与稳定性属性 | 已完成 |
| F9 按配置裁剪 | 词典/配置各自成包:t2s 构建 249 KB、s2t 913 KB、全量 CLI 1341 KB(wasm-gc) | 已完成 |
| F10 发布 | 发布到 mooncakes、GitHub Release 与演示素材 | 下一步 |
Install
Download zipOpenCC-compatible Chinese script conversion (simplified, traditional, Taiwan, Hong Kong, Japanese shinjitai) in pure MoonBit, with no FFI.
Dependencies