Crates.io | g-win |
lib.rs | g-win |
version | 0.1.4 |
source | src |
created_at | 2024-10-30 22:11:26.639605 |
updated_at | 2024-11-06 00:38:51.772962 |
description | A winnow parser for .gcode files |
homepage | |
repository | https://github.com/mj10021/g-win/ |
max_upload_size | |
id | 1429290 |
size | 19,381,390 |
g-win
is a G-code parsing crate for Rust, built with winnow
. It aims to maximize compatibility by preserving unrecognized commands for later processing, ensuring compatibility across environments and handling of features like macros and templating.
Preserves Unrecognized Commands: Stores any unrecognized or custom commands as strings in place.
Custom Command Handling: Easily add rules to parse any command.
Lightweight: Minimal API designed to streamline implementation.
Add g-win
to your Cargo.toml
:
[dependencies]
g-win = "0.1.0"
Then, run:
cargo build
All G-code file information is stored in the GCodeModel
struct. The parser is implemented through the FromStr
trait, returning a result of the type Result<GCodeModel, GCodeParseError>
.
use g_win::GCodeModel;
let gcode = "
G21 ; Set units to millimeters
G90 ; Absolute positioning
M107 ; Fan Off
G28 ; Home
G1 Z15.0 F9000 ; Move Z Axis up
MCustomCommand ; This is a custom command
";
let gcode: GCodeModel = gcode.parse().expect("failed to parse");
println!("{:?}", gcode);
g-win
stores unrecognized or custom commands as Command::Raw(String)
, preserving their original content.
Licensed under either of
at your option.
Contributions are welcome! Please submit a pull request or open an issue for suggestions and improvements.
Fork the repository.
Create a new branch: git checkout -b feature/your-feature-name
.
Commit your changes: git commit 'Add some feature'
.
Push to the branch: git push origin feature/your-feature-name
.
Open a pull request.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.