Home / File/ pre_processor.rs — tailwindcss Source File

pre_processor.rs — tailwindcss Source File

Architecture documentation for pre_processor.rs, a rust file in the tailwindcss codebase. 4 imports, 0 dependents.

File rust Oxide PreProcessors 4 imports 1 functions 1 classes

Entity Profile

Dependency Diagram

graph LR
  8d77aabf_954c_b962_4322_6d819b1af944["pre_processor.rs"]
  433675ca_8d0e_feff_42a5_b3f666878cca["pretty_assertions::assert_eq"]
  8d77aabf_954c_b962_4322_6d819b1af944 --> 433675ca_8d0e_feff_42a5_b3f666878cca
  9e6a1b6c_10c8_203c_88f1_d44384e0e31f["crate::extractor::"]
  8d77aabf_954c_b962_4322_6d819b1af944 --> 9e6a1b6c_10c8_203c_88f1_d44384e0e31f
  37e39030_8bef_e440_ddfc_3c8c16b82b02["std::collections::BTreeMap"]
  8d77aabf_954c_b962_4322_6d819b1af944 --> 37e39030_8bef_e440_ddfc_3c8c16b82b02
  83e70cba_514e_010d_da7f_df29217d7bb9["unicode_width::UnicodeWidthStr"]
  8d77aabf_954c_b962_4322_6d819b1af944 --> 83e70cba_514e_010d_da7f_df29217d7bb9
  style 8d77aabf_954c_b962_4322_6d819b1af944 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

pub trait PreProcessor: Sized + Default {
    fn process(&self, content: &[u8]) -> Vec<u8>;

    #[cfg(test)]
    fn test(input: &str, expected: &str) {
        use pretty_assertions::assert_eq;

        let input = input.as_bytes();
        let expected = expected.as_bytes();

        let processor = Self::default();

        let actual = processor.process(input);

        // Convert to strings for better error messages.
        let input = String::from_utf8_lossy(input);
        let actual = String::from_utf8_lossy(&actual);
        let expected = String::from_utf8_lossy(expected);

        // The input and output should have the exact same length.
        assert_eq!(input.len(), actual.len());
        assert_eq!(actual.len(), expected.len());

        assert_eq!(actual, expected);
    }

    #[cfg(test)]
    fn test_extract_exact(input: &str, expected: Vec<&str>) {
        use crate::extractor::{Extracted, Extractor};

        let input = input.as_bytes();

        let processor = Self::default();
        let transformed = processor.process(input);

        let extracted = Extractor::new(&transformed).extract();

        // Extract all candidates and css variables.
        let candidates = extracted
            .iter()
            .filter_map(|x| match x {
                Extracted::Candidate(bytes) => std::str::from_utf8(bytes).ok(),
                Extracted::CssVariable(bytes) => std::str::from_utf8(bytes).ok(),
            })
            .collect::<Vec<_>>();

        if candidates != expected {
            dbg!(&candidates, &expected);
            panic!("Extracted candidates do not match expected candidates");
        }
    }

    #[cfg(test)]
    fn test_extract_contains(input: &str, expected: Vec<&str>) {
        use crate::extractor::{Extracted, Extractor};

        let input = input.as_bytes();

        let processor = Self::default();
        let transformed = processor.process(input);
// ... (127 more lines)

Domain

Subdomains

Classes

Dependencies

  • crate::extractor::
  • pretty_assertions::assert_eq
  • std::collections::BTreeMap
  • unicode_width::UnicodeWidthStr

Frequently Asked Questions

What does pre_processor.rs do?
pre_processor.rs is a source file in the tailwindcss codebase, written in rust. It belongs to the Oxide domain, PreProcessors subdomain.
What functions are defined in pre_processor.rs?
pre_processor.rs defines 1 function(s): byte_offset_to_line_and_column.
What does pre_processor.rs depend on?
pre_processor.rs imports 4 module(s): crate::extractor::, pretty_assertions::assert_eq, std::collections::BTreeMap, unicode_width::UnicodeWidthStr.
Where is pre_processor.rs in the architecture?
pre_processor.rs is located at crates/oxide/src/extractor/pre_processors/pre_processor.rs (domain: Oxide, subdomain: PreProcessors, directory: crates/oxide/src/extractor/pre_processors).

Analyze Your Own Codebase

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

Try Supermodel Free