Bounded byte-oriented UN/EDIFACT syntax 3 parser, envelope validator and native CLI
| 能力 | 0.1.0 状态 |
|---|---|
| 语法版本 3;UNOA 限定字符;UNOB 可打印 ASCII 子集 | 支持 |
| UNA 或默认 : + . ? 空格 ';自定义服务字符 | 支持 |
| 转义、空元素/组件、原始半开字节范围 | 支持 |
| 单交换中的直接单/多消息,UNB/UNZ、UNH/UNT 顺序、引用及计数 | 支持 |
| 核心库 native / JavaScript / wasm-gc | 本地三个目标验证通过 |
| 文件 CLI | native;Windows 已验证,Linux 由提交后的 CI 验证 |
| 语法版本 4、功能组、交互式报文、连续交换 | 明确拒绝 |
| UTF-8/非 ASCII 值、完整业务目录、业务规则、增量解析、序列化 | 未实现 |
git clone https://github.com/ShiChengxu-creater/MoonEdifact.git
cd MoonEdifact
moon check --deny-warn
moon test --deny-warn
moon build --target native --deny-warn
moon run examples/parse_minimal
moon run cmd/main -- inspect testdata/minimal.edi --json
moon run cmd/main -- validate testdata/minimal.edisyntax=passed envelope=passed rules=not_checked messages=1 segments=5moon add ShiChengxu/MoonEdifact@0.1.1import {
"ShiChengxu/MoonEdifact" @edifact,
}///|
fn main {
let input = b"UNB+UNOA:3+S+R+261011:1200+I'UNH+1+ORDERS:D:96A:UN'BGM+220+X'UNT+3+1'UNZ+1+I'"
let limits = { ..@edifact.default_limits(), max_input_bytes: 1048576, }
let result = @edifact.parse(input, limits~)
println(@edifact.report_text(result))
if result.document is Some(doc) {
println(doc.segments[0].tag)
}
}moonedifact inspect file.edi --json
moonedifact validate file.edi
moonedifact validate file.edi --json --max-bytes 1048576
moonedifact inspect file.edi --json --show-values| 参数 | ParseLimits 字段 | 默认上限 |
|---|---|---|
| --max-bytes | max_input_bytes | 8,388,608 字节 |
| --max-segments | max_segments | 100,000 段 |
| --max-segment-bytes | max_segment_bytes | 65,536 原始字节,含终止符 |
| --max-elements | max_elements | 每段 1,024 个数据元 |
| --max-components | max_components | 每数据元 128 个组件 |
| --max-diagnostics | max_diagnostics | 100 条诊断 |
| 退出码 | 含义 |
|---|---|
| 0 | 语法/封套通过,或 help/version 正常完成 |
| 1 | 报文语法、封套或资源上限错误 |
| 2 | 参数、文件打开/读取等 I/O 错误 |
moon info
moon fmt
moon fmt --check
moon check --target native --deny-warn
moon build --target native --deny-warn
moon test --target native --deny-warn
moon check --target js --deny-warn
moon build --target js --deny-warn
moon test --target js --deny-warn
moon check --target wasm-gc --deny-warn
moon build --target wasm-gc --deny-warn
moon test --target wasm-gc --deny-warn
python scripts/repository_checks.py
python scripts/examples_smoke.py
python scripts/cli_smoke.py
python scripts/clean_consumer.py
moon package
python scripts/package_checks.pypub(all) struct Diagnostic {
code : String
layer : Layer
span : SourceSpan
segment_index : Int?
severity : String
message : String
hint : String?
} derive(Eq, Debug)pub(all) struct Document {
profile : SyntaxProfile
segments : Array[Segment]
span : SourceSpan
} derive(Eq, Debug)pub(all) struct EnvelopeResult {
interchange : Interchange?
diagnostics : Array[Diagnostic]
status : CheckStatus
} derive(Eq, Debug)pub(all) struct Message {
reference : Bytes
first_segment : Int
last_segment : Int
span : SourceSpan
} derive(Eq, Debug)pub(all) struct ParseResult {
document : Document?
interchange : Interchange?
diagnostics : Array[Diagnostic]
syntax : CheckStatus
envelope : CheckStatus
rules : CheckStatus
} derive(Eq, Debug)pub(all) struct Segment {
tag : String
index : Int
elements : Array[Element]
span : SourceSpan
} derive(Eq, Debug)Install
Download zipBounded byte-oriented UN/EDIFACT syntax 3 parser, envelope validator and native CLI