From 4f137aa06112b2aa59b86a49778a79ddf95f4d28 Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Mon, 17 Mar 2025 14:37:16 +0100 Subject: [PATCH 1/4] add regex crate --- Cargo.lock | 14 +++++--------- crates/oxide/Cargo.toml | 1 + 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 87fdc0539def..21f0b3a13399 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -410,13 +410,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.8.3" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81ca098a9821bd52d6b24fd8b10bd081f47d39c22778cafaa75a2857a62c6390" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.2", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -445,12 +446,6 @@ version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" -[[package]] -name = "regex-syntax" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" - [[package]] name = "regex-syntax" version = "0.8.5" @@ -548,6 +543,7 @@ dependencies = [ "ignore", "log", "rayon", + "regex", "rustc-hash", "tempfile", "tracing", diff --git a/crates/oxide/Cargo.toml b/crates/oxide/Cargo.toml index 1b2d42d52543..eb8b6156ce04 100644 --- a/crates/oxide/Cargo.toml +++ b/crates/oxide/Cargo.toml @@ -18,6 +18,7 @@ dunce = "1.0.5" bexpand = "1.2.0" fast-glob = "0.4.3" classification-macros = { path = "../classification-macros" } +regex = "1.11.1" [dev-dependencies] tempfile = "3.13.0" From 901a270b6b97cc018ae7b1cbbc076ddb93e3d6b8 Mon Sep 17 00:00:00 2001 From: Robin Malfait Date: Mon, 17 Mar 2025 14:37:28 +0100 Subject: [PATCH 2/4] add `Vue` pre-processor --- .../oxide/src/extractor/pre_processors/mod.rs | 2 + .../oxide/src/extractor/pre_processors/vue.rs | 46 +++++++++++++++++++ crates/oxide/src/lib.rs | 1 + 3 files changed, 49 insertions(+) create mode 100644 crates/oxide/src/extractor/pre_processors/vue.rs diff --git a/crates/oxide/src/extractor/pre_processors/mod.rs b/crates/oxide/src/extractor/pre_processors/mod.rs index 53a41abd970f..4609f10b9359 100644 --- a/crates/oxide/src/extractor/pre_processors/mod.rs +++ b/crates/oxide/src/extractor/pre_processors/mod.rs @@ -7,6 +7,7 @@ pub mod razor; pub mod ruby; pub mod slim; pub mod svelte; +pub mod vue; pub use clojure::*; pub use haml::*; @@ -17,3 +18,4 @@ pub use razor::*; pub use ruby::*; pub use slim::*; pub use svelte::*; +pub use vue::*; diff --git a/crates/oxide/src/extractor/pre_processors/vue.rs b/crates/oxide/src/extractor/pre_processors/vue.rs new file mode 100644 index 000000000000..15440bb865ff --- /dev/null +++ b/crates/oxide/src/extractor/pre_processors/vue.rs @@ -0,0 +1,46 @@ +use crate::extractor::pre_processors::pre_processor::PreProcessor; +use crate::pre_process_input; +use bstr::ByteSlice; +use regex::Regex; +use std::sync; + +static TEMPLATE_REGEX: sync::LazyLock = sync::LazyLock::new(|| { + Regex::new(r#"