From 9e6e21be4369505aeb1b51a88664e1ab610e020a Mon Sep 17 00:00:00 2001 From: Lukas Lueg Date: Sun, 14 Jul 2024 21:01:35 +0200 Subject: [PATCH] Remove `lazy_static` and `htmlescape` dependencies --- .github/workflows/check.yml | 14 +++++++++++--- Cargo.toml | 8 +++----- examples/nom4_method.svg | 6 ++---- examples/various.rs | 11 +++++------ src/diagram.rs | 2 +- src/lowering.rs | 2 +- tests/verification.rs | 12 +++++------- 7 files changed, 28 insertions(+), 27 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 4f2c49c..98597dc 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -6,7 +6,7 @@ jobs: fmt: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt @@ -15,7 +15,7 @@ jobs: clippy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: clippy @@ -24,7 +24,7 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - run: | cargo test --no-default-features @@ -32,3 +32,11 @@ jobs: sudo apt-get update && sudo apt-get install -y libxml2-utils cargo test -- --ignored cargo test --features visual-debug -- --ignored + + examples: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - run: cargo run --example src_to_svg + - run: cargo run --example various diff --git a/Cargo.toml b/Cargo.toml index 608aa1c..b46baf6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,15 +10,13 @@ readme = "README.md" exclude = ["examples/*.jpeg", "examples/*.jpg", "examples/*.svg", "examples/*.html"] [dependencies] -syn = { version = "2.0", features = ["full", "parsing", "extra-traits"], default_features=false } -railroad = "0.2" +syn = { version = "2.0", features = ["full", "parsing", "extra-traits"], default-features=false } +railroad = { version = "0.3.1" } proc-macro2 = { version = "1.0", default-features=false } [dev-dependencies] -lazy_static = "1.1" -quote = { version = "1.0", default_features = false } +quote = { version = "1.0", default-features = false } railroad_verification = "0.1" -htmlescape = "0.3" [features] visual-debug = ["railroad/visual-debug"] diff --git a/examples/nom4_method.svg b/examples/nom4_method.svg index 2d2d432..dae4136 100644 --- a/examples/nom4_method.svg +++ b/examples/nom4_method.svg @@ -1,4 +1,4 @@ - + ")?; outp.write_all(b"")?; - write!(outp, "

{}

", htmlescape::encode_minimal(title))?; + write!(outp, "

{}

", railroad::svg::encode_minimal(title))?; outp.write_all(b"
")?; let mut names = Vec::with_capacity(examples.len()); outp.write_all(b"
")?; @@ -96,23 +95,23 @@ pub fn to_example_page( write!( outp, "
", - htmlescape::encode_attribute(&name) + railroad::svg::encode_attribute(&name) )?; write!( outp, "", - htmlescape::encode_attribute(&name) + railroad::svg::encode_attribute(&name) )?; write!( outp, "

Macro `{}`

", - htmlescape::encode_minimal(&name) + railroad::svg::encode_minimal(&name) )?; names.push(name); write!( outp, "
{}

", - htmlescape::encode_minimal(src) + railroad::svg::encode_minimal(src) )?; let dia_svg = dia.to_string(); let dia_opt_svg = dia_opt.to_string(); diff --git a/src/diagram.rs b/src/diagram.rs index b7ad91e..bccebc9 100644 --- a/src/diagram.rs +++ b/src/diagram.rs @@ -280,7 +280,7 @@ fn into_primitive(m: lowering::Matcher) -> Box { let mut nonterm = railroad::NonTerminal::new(name); nonterm .attr("class".to_owned()) - .or_insert_with(Default::default) + .or_default() .push_str(fragment_to_class(&fragment)); Box::new(nonterm) } diff --git a/src/lowering.rs b/src/lowering.rs index c2ca60c..0076fd7 100644 --- a/src/lowering.rs +++ b/src/lowering.rs @@ -465,7 +465,7 @@ impl InspectVisitor for NonTerminalCollector { Matcher::NonTerminal { name, fragment } => { self.bag .entry(fragment.clone()) - .or_insert_with(Default::default) + .or_default() .insert(name.clone()); } other => self.visit_children(other), diff --git a/tests/verification.rs b/tests/verification.rs index a6397ae..718b6eb 100644 --- a/tests/verification.rs +++ b/tests/verification.rs @@ -3,13 +3,11 @@ /// /// This calls out to the `xmllint` tool from libxml2, which may not be available. /// The test is therefor ignored by default; use `cargo test -- --ignored` +use std::sync::OnceLock; -#[macro_use] -extern crate lazy_static; - -lazy_static! { - static ref VERIFIER: railroad_verification::Verifier = - railroad_verification::Verifier::new().unwrap(); +fn init_verifier() -> &'static railroad_verification::Verifier { + static VERIFIER: OnceLock = OnceLock::new(); + VERIFIER.get_or_init(|| railroad_verification::Verifier::new().unwrap()) } fn to_diagram(src: &str) -> (String, Vec<(&'static str, String)>) { @@ -51,7 +49,7 @@ macro_rules! verify { eprintln!("Parsed `{}` as macro '{}'", stringify!($testname), name); for (variant, dia) in dias.into_iter() { eprintln!("Verifying variant `{}`", variant); - if let Err(e) = VERIFIER.verify(dia) { + if let Err(e) = init_verifier().verify(dia) { eprintln!("{:?}", e); panic!("Failed to verifiy `{}`", name); }