diff --git a/Cargo.lock b/Cargo.lock index 1d00a81..05dd14c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1534,17 +1534,18 @@ dependencies = [ [[package]] name = "svg2gcode" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d18e790145346387c28b89177f0f262d7be814d96456b7d844ea930e5e014f5" +version = "0.2.3" dependencies = [ + "cairo-rs", "euclid", "g-code", "log", "lyon_geom", "paste", + "pretty_assertions", "roxmltree", "serde", + "serde_json", "svgtypes", "uom", ] @@ -1552,24 +1553,23 @@ dependencies = [ [[package]] name = "svg2gcode" version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "908027aaae786a28b56c78ce9d6369cee4a6589d27320c5ef9a9485b8ac7c6d6" dependencies = [ - "cairo-rs", "euclid", "g-code", "log", "lyon_geom", "paste", - "pretty_assertions", "roxmltree", "serde", - "serde_json", "svgtypes", "uom", ] [[package]] name = "svg2gcode-cli" -version = "0.0.11" +version = "0.0.12" dependencies = [ "codespan-reporting", "env_logger", @@ -1578,13 +1578,13 @@ dependencies = [ "roxmltree", "serde_json", "structopt", - "svg2gcode 0.2.2", + "svg2gcode 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "svgtypes", ] [[package]] name = "svg2gcode-web" -version = "0.0.11" +version = "0.0.12" dependencies = [ "base64", "codespan", @@ -1598,7 +1598,7 @@ dependencies = [ "roxmltree", "serde", "serde_json", - "svg2gcode 0.2.2", + "svg2gcode 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "svgtypes", "thiserror", "wasm-bindgen", diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 93d3ac9..7591bee 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "svg2gcode-cli" -version = "0.0.11" +version = "0.0.12" authors = ["Sameer Puri "] edition = "2021" description = "Command line interface for svg2gcode" @@ -8,7 +8,7 @@ repository = "https://github.com/sameer/svg2gcode" license = "MIT" [dependencies] -svg2gcode = { version = "0.2.2", features = ["serde"]} +svg2gcode = { version = "0.2.3", features = ["serde"]} env_logger = { version = "0", default-features = false, features = ["atty", "termcolor", "humantime"] } log = "0" g-code = "0.4.2" diff --git a/cli/src/main.rs b/cli/src/main.rs index 5602140..58bcd05 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -79,6 +79,11 @@ struct Opt { /// /// Useful for streaming g-code checksums: Option, + #[structopt(long)] + /// Add a newline character before each comment + /// + /// Workaround for parsers that don't accept comments on the same line + newline_before_comment: Option, } fn main() -> io::Result<()> { @@ -149,6 +154,10 @@ fn main() -> io::Result<()> { settings.postprocess.checksums = checksums; } + if let Some(newline_before_comment) = opt.newline_before_comment { + settings.postprocess.newline_before_comment = newline_before_comment; + } + settings }; @@ -296,6 +305,7 @@ fn main() -> io::Result<()> { FormatOptions { line_numbers: settings.postprocess.line_numbers, checksums: settings.postprocess.checksums, + newline_before_comment: settings.postprocess.newline_before_comment, ..Default::default() }, std::io::stdout(), diff --git a/web/Cargo.toml b/web/Cargo.toml index 09f02e5..70590d1 100644 --- a/web/Cargo.toml +++ b/web/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "svg2gcode-web" -version = "0.0.11" +version = "0.0.12" authors = ["Sameer Puri "] edition = "2021" description = "Convert vector graphics to g-code for pen plotters, laser engravers, and other CNC machines" @@ -10,7 +10,7 @@ license = "MIT" [dependencies] wasm-bindgen = "0.2" -svg2gcode = { version = "0.2.2", features = ["serde"] } +svg2gcode = { version = "0.2.3", features = ["serde"] } roxmltree = "0.19" g-code = "0.4.2" codespan-reporting = "0.11" diff --git a/web/src/forms/mod.rs b/web/src/forms/mod.rs index ec86508..f52c248 100644 --- a/web/src/forms/mod.rs +++ b/web/src/forms/mod.rs @@ -77,6 +77,12 @@ pub fn settings_form() -> Html { form.line_numbers = event.target_unchecked_into::().checked(); }); + let on_newline_before_comment_change = + form_dispatch.reduce_mut_callback_with(|form, event: Event| { + form.newline_before_comment = + event.target_unchecked_into::().checked(); + }); + let save_onclick = { let close_ref = close_ref.clone(); let form_state = form_state.clone(); @@ -170,6 +176,16 @@ pub fn settings_form() -> Html { /> +
+ + + +
)} footer={ diff --git a/web/src/state.rs b/web/src/state.rs index 3a6775c..55ec30c 100644 --- a/web/src/state.rs +++ b/web/src/state.rs @@ -21,6 +21,7 @@ pub struct FormState { pub end_sequence: Option>, pub checksums: bool, pub line_numbers: bool, + pub newline_before_comment: bool, } impl Default for FormState { @@ -80,6 +81,7 @@ impl<'a> TryInto for &'a FormState { postprocess: PostprocessConfig { checksums: self.checksums, line_numbers: self.line_numbers, + newline_before_comment: self.newline_before_comment, }, }) } @@ -105,6 +107,7 @@ impl From<&Settings> for FormState { end_sequence: settings.machine.end_sequence.clone().map(Ok), checksums: settings.postprocess.checksums, line_numbers: settings.postprocess.line_numbers, + newline_before_comment: settings.postprocess.newline_before_comment, } } }