6 releases
| 0.2.1 | Feb 2, 2025 |
|---|---|
| 0.2.0 | Feb 1, 2025 |
| 0.1.4 | Nov 6, 2024 |
| 0.1.1 | Oct 31, 2024 |
#1328 in Parser implementations
616 downloads per month
5MB
711 lines
g-win
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.
Table of Contents
Design
-
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.
Installation
Add g-win to your Cargo.toml:
[dependencies]
g-win = "0.1.0"
Then, run:
cargo build
Usage
Parsing G-code
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);
Handling Unrecognized Commands
g-win stores unrecognized or custom commands as Command::Raw(String), preserving their original content.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.
Contribution
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.