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

View file

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

View file

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