4 个版本 (2 个破坏性更新)
0.3.1 | 2020 年 12 月 12 日 |
---|---|
0.3.0 | 2020 年 12 月 3 日 |
0.2.0 | 2020 年 11 月 16 日 |
0.1.0 | 2020 年 11 月 6 日 |
#2226 in 解析器实现
每月下载量 27 次
用于 weldr-bin
86KB
2K SLoC
👨🏭 weldr,您最喜欢的积木与 Rust 的链接 🧱
weldr 是一个 Rust 库和命令行工具,用于操作 LDraw 文件 (格式规范),这些文件描述了 LEGO®* 零件的三维模型。
📦 weldr
包 包含库,允许构建利用 LDraw 社区贡献的出色组件数据库的命令行工具和应用程序。
注意:对于二进制命令行工具 ⚙ weldr
,请参阅📦 weldr-bin
包。
示例
使用 weldr
包解析包含 2 条命令的单个 LDraw 文件内容
extern crate weldr;
use weldr::{parse_raw, Command, CommentCmd, LineCmd, Vec3};
fn main() {}
#[test]
fn parse_ldr() {
let ldr = b"0 this is a comment\n2 16 0 0 0 1 1 1";
let cmds = parse_raw(ldr);
let cmd0 = Command::Comment(CommentCmd::new("this is a comment"));
let cmd1 = Command::Line(LineCmd{
color: 16,
vertices: [
Vec3{ x: 0.0, y: 0.0, z: 0.0 },
Vec3{ x: 1.0, y: 1.0, z: 1.0 }
]
});
assert_eq!(cmds, vec![cmd0, cmd1]);
}
文档
Rust 版本要求
weldr 使用 rustc
版本 1.44、稳定版 和 beta 进行测试,尽管可能可以使用较旧版本,但从未进行过测试。
安装
weldr 可在 crates.io 上获得,并可以像这样包含在您的 Cargo 启用项目中
[dependencies]
weldr = "0.3"
然后在您的代码中包含它
extern crate weldr;
技术功能
weldr 利用 nom 解析器组合库有效地解析 LDraw 文件,并将它们转换为内存中的数据结构以供消费。所有解析都在 &[u8]
输入上完成,预期包含符合 规范 的 LDraw 内容。特别是,这意味着
- UTF-8 编码的输入
- 接受 DOS/Windows
<CR><LF>
和 Unix<LF>
行终止符
版权
当前代码仓库受 MIT 许可证许可。
LDraw™ 是由 James Jessiman 的遗产拥有并授权的商标,该商标不支持、批准或授权此项目。
注:LEGO®是乐高集团的注册商标,该集团不赞助、认可或授权此项目。
依赖项
约2.5MB
约39K SLoC