🦺 Modifica tipos para atributos HTML a minúsculas

This commit is contained in:
Manuel Cillero 2025-08-21 09:31:20 +02:00
parent 8b06b1752a
commit 97581659bf
3 changed files with 10 additions and 7 deletions

View file

@ -25,6 +25,7 @@ pub enum ClassesOp {
///
/// - El [orden de las clases no es relevante](https://stackoverflow.com/a/1321712) en CSS.
/// - No se permiten clases duplicadas.
/// - Las clases se convierten a minúsculas.
/// - Las clases vacías se ignoran.
///
/// # Ejemplo
@ -32,8 +33,8 @@ pub enum ClassesOp {
/// ```rust
/// use pagetop::prelude::*;
///
/// let classes = OptionClasses::new("btn btn-primary")
/// .with_value(ClassesOp::Add, "active")
/// let classes = OptionClasses::new("Btn btn-primary")
/// .with_value(ClassesOp::Add, "Active")
/// .with_value(ClassesOp::Remove, "btn-primary");
///
/// assert_eq!(classes.get(), Some(String::from("btn active")));
@ -51,7 +52,7 @@ impl OptionClasses {
#[builder_fn]
pub fn with_value(mut self, op: ClassesOp, classes: impl AsRef<str>) -> Self {
let classes: &str = classes.as_ref();
let classes = classes.as_ref().to_ascii_lowercase();
let classes: Vec<&str> = classes.split_ascii_whitespace().collect();
if classes.is_empty() {

View file

@ -7,6 +7,7 @@ use crate::{builder_fn, AutoDefault};
/// # Normalización
///
/// - Se eliminan los espacios al principio y al final.
/// - Se convierte a minúsculas.
/// - Se sustituyen los espacios intermedios por guiones bajos (`_`).
/// - Si el resultado es una cadena vacía, se guarda `None`.
///
@ -15,7 +16,7 @@ use crate::{builder_fn, AutoDefault};
/// ```rust
/// use pagetop::prelude::*;
///
/// let id = OptionId::new("main section");
/// let id = OptionId::new(" main Section ");
/// assert_eq!(id.get(), Some(String::from("main_section")));
///
/// let empty = OptionId::default();
@ -39,7 +40,7 @@ impl OptionId {
/// El valor se normaliza automáticamente.
#[builder_fn]
pub fn with_value(mut self, value: impl AsRef<str>) -> Self {
let value = value.as_ref().trim().replace(' ', "_");
let value = value.as_ref().trim().to_ascii_lowercase().replace(' ', "_");
self.0 = (!value.is_empty()).then_some(value);
self
}

View file

@ -7,6 +7,7 @@ use crate::{builder_fn, AutoDefault};
/// # Normalización
///
/// - Se eliminan los espacios al principio y al final.
/// - Se convierte a minúsculas.
/// - Se sustituyen los espacios intermedios por guiones bajos (`_`).
/// - Si el resultado es una cadena vacía, se guarda `None`.
///
@ -15,7 +16,7 @@ use crate::{builder_fn, AutoDefault};
/// ```rust
/// use pagetop::prelude::*;
///
/// let name = OptionName::new(" display name ");
/// let name = OptionName::new(" DISplay name ");
/// assert_eq!(name.get(), Some(String::from("display_name")));
///
/// let empty = OptionName::default();
@ -39,7 +40,7 @@ impl OptionName {
/// El valor se normaliza automáticamente.
#[builder_fn]
pub fn with_value(mut self, value: impl AsRef<str>) -> Self {
let value = value.as_ref().trim().replace(' ', "_");
let value = value.as_ref().trim().to_ascii_lowercase().replace(' ', "_");
self.0 = (!value.is_empty()).then_some(value);
self
}