tailwind-css-fixes 0.12.31

Fixes for tailwind-css crate (Compile tailwind short instructions to css)
Documentation
use std::{
    cmp::Ordering,
    collections::{BTreeMap, BTreeSet},
    fmt::{Debug, Display, Formatter, Write},
    hash::{Hash, Hasher},
    ops::{Add, AddAssign},
};

use itertools::Itertools;
use xxhash_rust::xxh3::Xxh3;

use crate::{Result, TailwindBuilder, TailwindInstance};

pub use self::{
    attribute::CssAttributes,
    important::{ImportantMap, ImportantSet},
    mode::CssInlineMode,
};
pub(crate) use self::{bundle::CssBundle, instance::CssInstance};

mod attribute;
mod bundle;
mod important;
mod instance;
mod mode;

/// Normalize class name as a valid CSS selector
/// - Escapes non-alphanumeric characters with a backslash (`\`).
/// - Replaces spaces with underscores (`_`).
fn normalize_class_name(f: &mut (dyn Write), name: &str) -> Result<()> {
    for c in name.chars() {
        match c {
            ' ' => write!(f, "_"),
            r @ ('-' | '_') => write!(f, "{}", r),
            a if a.is_alphanumeric() => write!(f, "{}", a),
            _ => write!(f, "\\{}", c),
        }?
    }
    Ok(())
}