⚡️ Mejora rendimiento de búsquedas de clases
This commit is contained in:
parent
4bf2c18b24
commit
e9565bf70b
1 changed files with 31 additions and 3 deletions
|
|
@ -133,9 +133,37 @@ impl Classes {
|
|||
}
|
||||
}
|
||||
|
||||
/// Devuelve `true` si la clase está presente.
|
||||
/// Devuelve `true` si **una única clase** está presente.
|
||||
///
|
||||
/// Si necesitas comprobar varias clases separadas por espacios, usa [`contains_all`] o
|
||||
/// [`contains_any`].
|
||||
pub fn contains(&self, class: impl AsRef<str>) -> bool {
|
||||
let class = class.as_ref().to_ascii_lowercase();
|
||||
self.0.iter().any(|c| c == &class)
|
||||
self.contains_class(class.as_ref())
|
||||
}
|
||||
|
||||
/// Devuelve `true` si **todas** las clases indicadas están presentes.
|
||||
pub fn contains_all(&self, classes: impl AsRef<str>) -> bool {
|
||||
classes
|
||||
.as_ref()
|
||||
.split_ascii_whitespace()
|
||||
.all(|class| self.contains_class(class))
|
||||
}
|
||||
|
||||
/// Devuelve `true` si **alguna** de las clases indicadas está presente.
|
||||
pub fn contains_any(&self, classes: impl AsRef<str>) -> bool {
|
||||
classes
|
||||
.as_ref()
|
||||
.split_ascii_whitespace()
|
||||
.any(|class| self.contains_class(class))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn contains_class(&self, class: &str) -> bool {
|
||||
if class.bytes().any(|b| b.is_ascii_uppercase()) {
|
||||
let class = class.to_ascii_lowercase();
|
||||
self.0.iter().any(|c| c == &class)
|
||||
} else {
|
||||
self.0.iter().any(|c| c == class)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue