Skip to content

Commit eb9a825

Browse files
committed
cli & web v0.0.9: allow DTD, fixes #54
1 parent c4e14d0 commit eb9a825

7 files changed

Lines changed: 58 additions & 19 deletions

File tree

Cargo.lock

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "svg2gcode-cli"
3-
version = "0.0.8"
3+
version = "0.0.9"
44
authors = ["Sameer Puri <crates@purisa.me>"]
55
edition = "2021"
66
description = "Command line interface for svg2gcode"

cli/src/main.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use g_code::{
33
parse::snippet_parser,
44
};
55
use log::info;
6+
use roxmltree::ParsingOptions;
67
use std::{
78
env,
89
fs::File,
@@ -268,7 +269,14 @@ fn main() -> io::Result<()> {
268269
std::process::exit(1)
269270
};
270271

271-
let document = roxmltree::Document::parse(&input).unwrap();
272+
let document = roxmltree::Document::parse_with_options(
273+
&input,
274+
ParsingOptions {
275+
allow_dtd: true,
276+
..Default::default()
277+
},
278+
)
279+
.unwrap();
272280

273281
let program = svg2program(&document, &settings.conversion, options, machine);
274282

lib/src/lib.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ mod test {
3232
use super::*;
3333
use g_code::emit::{FormatOptions, Token};
3434
use pretty_assertions::assert_eq;
35+
use roxmltree::ParsingOptions;
3536
use svgtypes::{Length, LengthUnit};
3637

3738
/// The values change between debug and release builds for circular interpolation,
@@ -45,7 +46,14 @@ mod test {
4546
) -> Vec<Token<'_>> {
4647
let config = ConversionConfig::default();
4748
let options = ConversionOptions { dimensions };
48-
let document = roxmltree::Document::parse(input).unwrap();
49+
let document = roxmltree::Document::parse_with_options(
50+
input,
51+
ParsingOptions {
52+
allow_dtd: true,
53+
..Default::default()
54+
},
55+
)
56+
.unwrap();
4957

5058
let machine = Machine::new(
5159
SupportedFunctionality {

web/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "svg2gcode-web"
3-
version = "0.0.8"
3+
version = "0.0.9"
44
authors = ["Sameer Puri <crates@purisa.me>"]
55
edition = "2021"
66
description = "Convert vector graphics to g-code for pen plotters, laser engravers, and other CNC machines"

web/src/forms/mod.rs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use gloo_file::{
33
futures::read_as_text,
44
};
55
use js_sys::TypeError;
6-
use roxmltree::Document;
6+
use roxmltree::{Document, ParsingOptions};
77
use std::{convert::TryInto, path::Path};
88
use svg2gcode::Settings;
99
use wasm_bindgen::JsCast;
@@ -365,7 +365,15 @@ pub fn svg_form() -> Html {
365365
.await
366366
.map_err(|err| err.to_string())
367367
.and_then(|text| {
368-
if let Some(err) = Document::parse(&text).err() {
368+
if let Some(err) = Document::parse_with_options(
369+
&text,
370+
ParsingOptions {
371+
allow_dtd: true,
372+
..Default::default()
373+
},
374+
)
375+
.err()
376+
{
369377
Err(format!("Error parsing {}: {}", &filename, err))
370378
} else {
371379
Ok(Svg {
@@ -443,7 +451,15 @@ pub fn svg_form() -> Html {
443451
.unwrap()
444452
.as_string()
445453
.unwrap();
446-
if let Some(err) = Document::parse(&text).err() {
454+
if let Some(err) = Document::parse_with_options(
455+
&text,
456+
ParsingOptions {
457+
allow_dtd: true,
458+
..Default::default()
459+
},
460+
)
461+
.err()
462+
{
447463
url_input_parsed.set(Some(Err(format!(
448464
"Error parsing {}: {}",
449465
&response_url, err

web/src/main.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use g_code::{
1010
};
1111
use js_sys::Date;
1212
use log::Level;
13-
use roxmltree::Document;
13+
use roxmltree::{Document, ParsingOptions};
1414
use svg2gcode::{svg2program, ConversionOptions, Machine};
1515
use yew::prelude::*;
1616

@@ -97,7 +97,14 @@ fn app() -> Html {
9797
.transpose()
9898
.unwrap(),
9999
);
100-
let document = Document::parse(svg.content.as_str()).unwrap();
100+
let document = Document::parse_with_options(
101+
svg.content.as_str(),
102+
ParsingOptions {
103+
allow_dtd: true,
104+
..Default::default()
105+
},
106+
)
107+
.unwrap();
101108

102109
let program =
103110
svg2program(&document, &app_store.settings.conversion, options, machine);

0 commit comments

Comments
 (0)