Home / Function/ test_variant_extraction() — tailwindcss Function Reference

test_variant_extraction() — tailwindcss Function Reference

Architecture documentation for the test_variant_extraction() function in variant_machine.rs from the tailwindcss codebase.

Entity Profile

Dependency Diagram

graph TD
  67351e4e_3eb9_d14b_51db_22074456445c["test_variant_extraction()"]
  65f88ee5_a242_be7c_fc9b_70da07dd6b00["variant_machine.rs"]
  67351e4e_3eb9_d14b_51db_22074456445c -->|defined in| 65f88ee5_a242_be7c_fc9b_70da07dd6b00
  style 67351e4e_3eb9_d14b_51db_22074456445c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

crates/oxide/src/extractor/variant_machine.rs lines 97–145

    fn test_variant_extraction() {
        for (input, expected) in [
            // Simple variant
            ("hover:flex", vec!["hover:"]),
            // Single character variant
            ("a:flex", vec!["a:"]),
            ("*:flex", vec!["*:"]),
            // With special characters
            ("**:flex", vec!["**:"]),
            // With dashes
            ("data-disabled:flex", vec!["data-disabled:"]),
            // Multiple variants
            ("hover:focus:flex", vec!["hover:", "focus:"]),
            // Arbitrary variant
            ("[&:hover:focus]:flex", vec!["[&:hover:focus]:"]),
            // Arbitrary variant with nested brackets
            (
                "[&>[data-slot=icon]:last-child]:",
                vec!["[&>[data-slot=icon]:last-child]:"],
            ),
            (
                "sm:[&>[data-slot=icon]:last-child]:",
                vec!["sm:", "[&>[data-slot=icon]:last-child]:"],
            ),
            (
                "[:is(italic):is(underline)]:",
                vec!["[:is(italic):is(underline)]:"],
            ),
            // Modifiers
            ("group-hover/foo:flex", vec!["group-hover/foo:"]),
            ("group-hover/[.parent]:flex", vec!["group-hover/[.parent]:"]),
            // Arbitrary variant with bracket notation
            ("data-[state=pending]:flex", vec!["data-[state=pending]:"]),
            // Arbitrary variant with CSS property shorthand
            ("supports-(--my-color):flex", vec!["supports-(--my-color):"]),
            // -------------------------------------------------------------

            // Exceptions
            // Empty arbitrary variant is not allowed
            ("[]:flex", vec![]),
            // Named variant must be followed by `:`
            ("hover", vec![]),
            // Modifier cannot be followed by another modifier. However, we don't check boundary
            // characters in this state machine so we will get `bar:`.
            ("group-hover/foo/bar:flex", vec!["bar:"]),
        ] {
            assert_eq!(VariantMachine::test_extract_all(input), expected);
        }
    }

Domain

Subdomains

Frequently Asked Questions

What does test_variant_extraction() do?
test_variant_extraction() is a function in the tailwindcss codebase, defined in crates/oxide/src/extractor/variant_machine.rs.
Where is test_variant_extraction() defined?
test_variant_extraction() is defined in crates/oxide/src/extractor/variant_machine.rs at line 97.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free