ISO 13616 IBAN normalization, checksum validation, and BBAN structure checks for MoonBit
紧凑/分组文本 → 字符集与长度 → ISO 13616 重排 mod-97 → BBAN 模式
→ 银行/分行/账号字段、校验位重建、稳定诊断git clone https://github.com/LuoYunze06/mooniban.git
cd mooniban
moon update
python scripts/check_toolchain.py
moon check --target wasm-gc --deny-warn
moon test --target wasm-gc --deny-warn
moon run examples/api-demo --target wasm-gcmoon run cmd/mooniban -- validate "DE89 3704 0044 0532 0130 00"
# valid DE89 3704 0044 0532 0130 00
moon run cmd/mooniban -- parse "DE89 3704 0044 0532 0130 00"
# valid compact=DE89370400440532013000 pretty=DE89 3704 0044 0532 0130 00 country=DE check=89 bban=370400440532013000 bank=37040044 branch=- account=0532013000moon run cmd/mooniban -- build GB WEST12345698765432
# GB82 WEST 1234 5698 7654 32moon run cmd/mooniban -- validate DE88370400440532013000
# error: IBAN008: ISO 13616 checksum remainder is N, expected 1
moon run cmd/mooniban -- explain DE88370400440532013000
# invalid compact=DE88370400440532013000 IBAN008: ...moon run cmd/mooniban -- validate --file examples/sample-ibans.txt
# valid DE89 3704 0044 0532 0130 00import {
"LuoYunze06/mooniban",
}| API | 用途 |
|---|---|
| compact_text / pretty_groups / Iban::pretty | 去掉空白与连字符并转大写;按四位分组 |
| parse / validate | 字符集、15–34 总长、国家长度、BBAN 模式、mod-97 |
| checksum_remainder | 只计算 ISO 13616 重排后的余数 |
| build / check_digits_for | 由国家代码 + BBAN 重建校验位 |
| Iban::bank / branch / account | 按国家登记表切片;无该字段时返回 None |
| explain / IbanError::format | 稳定诊断,错误码 IBAN001–IBAN011 |
| run_command | CLI 同款命令,便于嵌入测试 |
| registered_countries / country_spec | 当前 72 个国家的长度与模式 |
moon test --target wasm-gc --deny-warn
python scripts/smoke.py --target wasm-gc
python scripts/readiness.py --skip-native-runtimeInstall
Download zipISO 13616 IBAN normalization, checksum validation, and BBAN structure checks for MoonBit