From c7fb867ce60e40384224a548a6aabd32ff46b20a Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jan 2024 16:22:37 +0100 Subject: [PATCH] classes are also checked inside of strings in expression --- Cargo.toml | 2 +- src/visit_class.rs | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index aa5cb9d..e1acead 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "css-knife" -version = "0.1.6" +version = "0.1.7" edition = "2021" authors = ["uros-5"] license = "MIT" diff --git a/src/visit_class.rs b/src/visit_class.rs index 1a2493d..572091a 100644 --- a/src/visit_class.rs +++ b/src/visit_class.rs @@ -13,12 +13,24 @@ pub fn check_html( Settings { element_content_handlers: vec![element!("[class]", |el| { let classes = el.get_attribute("class").unwrap(); + let mut in_expr = false; let classes = classes.split(' '); let classes = classes .into_iter() .map(|c| { - if let Some(class) = msv.get(c) { - return class; + if c.ends_with("{{") { + in_expr = true; + } else if c.ends_with("}}") { + in_expr = false + } + let single = c.contains('\''); + let double = c.contains('"'); + if in_expr && !single && !double { + return c.to_string(); + } + let c2 = c.replace(['\"', '\''], ""); + if let Some(class) = msv.get(&c2) { + return c.replace(&c2, &class); } c.to_string() })