From 4b3fc945749ee9a888285cf26877e1192d2b3dd3 Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Wed, 13 Jul 2022 20:59:07 +0200 Subject: [PATCH] =?UTF-8?q?A=C3=B1ade=20la=20opci=C3=B3n=20de=20borrar=20c?= =?UTF-8?q?lases=20de=20componentes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pagetop/src/html.rs | 2 +- pagetop/src/html/classes.rs | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/pagetop/src/html.rs b/pagetop/src/html.rs index 3d71db75..4e9d3355 100644 --- a/pagetop/src/html.rs +++ b/pagetop/src/html.rs @@ -15,7 +15,7 @@ mod identifier; pub use identifier::IdentifierValue; mod classes; -pub use classes::{Classes, ClassesOp}; +pub use classes::{Classes, ClassesOp, ClassValue}; mod unit; pub use unit::UnitValue; diff --git a/pagetop/src/html/classes.rs b/pagetop/src/html/classes.rs index a3766c59..2bc8421e 100644 --- a/pagetop/src/html/classes.rs +++ b/pagetop/src/html/classes.rs @@ -1,11 +1,14 @@ use crate::concat_string; +pub type ClassValue = &'static str; + pub enum ClassesOp { Add, - AddAfter(&'static str), - AddBefore(&'static str), + AddAfter(ClassValue), + AddBefore(ClassValue), AddFirst, - Replace(&'static str), + Remove, + Replace(ClassValue), Reset, SetDefault, SetDefaultIfEmpty, @@ -59,6 +62,17 @@ impl Classes { self.added = concat_string!(classes, " ", self.added).trim().to_owned() }, + ClassesOp::Remove => { + let v_list: Vec<&str> = classes.split_ascii_whitespace().collect(); + let mut v_added: Vec<&str> = self.added.split_ascii_whitespace().collect(); + for class in v_list { + if let Some(pos) = v_added.iter().position(|c| c.eq(&class)) { + v_added.remove(pos); + } + } + self.added = v_added.join(" "); + }, + ClassesOp::Replace(class) => { let mut v_added: Vec<&str> = self.added.split_ascii_whitespace().collect(); match v_added.iter().position(|c| c.eq(&class)) {