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
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
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.