use-web-css 0.0.1

Small CSS utility primitives for RustUse
Documentation
use use_css::{
    extract_css_declarations, is_css_color_value, is_css_custom_property, is_css_identifier,
    is_css_length_value, looks_like_css, minify_css_basic, normalize_css_property,
    split_css_declaration, strip_css_comments,
};

#[test]
fn detects_css() {
    assert!(looks_like_css(".card { color: red; }"));
    assert!(looks_like_css("color: red"));
    assert!(!looks_like_css("plain text"));
}

#[test]
fn splits_and_extracts_declarations() {
    let declaration = split_css_declaration("color: red;").unwrap();
    let declarations = extract_css_declarations(".card { color: red; margin-top: 1rem; }");

    assert_eq!(declaration.property, "color");
    assert_eq!(declarations.len(), 2);
}

#[test]
fn normalizes_properties_and_detects_custom_properties() {
    assert_eq!(normalize_css_property(" Margin-Top "), "margin-top");
    assert!(is_css_identifier("margin-top"));
    assert!(is_css_custom_property("--brand-color"));
}

#[test]
fn detects_color_and_length_values() {
    assert!(is_css_color_value("#ff00aa"));
    assert!(is_css_color_value("rgba(10, 20, 30, 0.5)"));
    assert!(is_css_length_value("1.5rem"));
    assert!(is_css_length_value("0"));
}

#[test]
fn strips_comments_and_minifies() {
    assert_eq!(
        strip_css_comments(".card { color: red; /* note */ margin: 1rem; }"),
        ".card { color: red;  margin: 1rem; }"
    );
    assert_eq!(
        minify_css_basic(".card { color: red; margin-top: 1rem; }"),
        ".card{color:red;margin-top:1rem;}"
    );
}

#[test]
fn handles_malformed_and_empty_input() {
    assert_eq!(split_css_declaration("color red"), None);
    assert!(extract_css_declarations("").is_empty());
    assert!(!is_css_identifier("1bad"));
    assert!(!is_css_length_value("big"));
}