Home / File/ razor.rs — tailwindcss Source File

razor.rs — tailwindcss Source File

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

File rust OxideEngine PreProcessors 3 imports 3 functions

Entity Profile

Dependency Diagram

graph LR
  5e723576_1c08_7bc2_5dae_fad3ce841e88["razor.rs"]
  decd56ec_6e93_882e_f890_98c8f0adee0d["super::Razor"]
  5e723576_1c08_7bc2_5dae_fad3ce841e88 --> decd56ec_6e93_882e_f890_98c8f0adee0d
  a55fec3d_3fee_4b46_48f2_43f3844c61e4["crate::extractor::pre_processors::pre_processor::PreProcessor"]
  5e723576_1c08_7bc2_5dae_fad3ce841e88 --> a55fec3d_3fee_4b46_48f2_43f3844c61e4
  e8f7ef42_4edb_c180_b1a1_7f3dcfa8e322["bstr::ByteSlice"]
  5e723576_1c08_7bc2_5dae_fad3ce841e88 --> e8f7ef42_4edb_c180_b1a1_7f3dcfa8e322
  style 5e723576_1c08_7bc2_5dae_fad3ce841e88 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

use crate::extractor::pre_processors::pre_processor::PreProcessor;
use bstr::ByteSlice;

#[derive(Debug, Default)]
pub struct Razor;

impl PreProcessor for Razor {
    fn process(&self, content: &[u8]) -> Vec<u8> {
        content.replace("@@", " @").replace(r#"@("@")"#, "     @")
    }
}

#[cfg(test)]
mod tests {
    use super::Razor;
    use crate::extractor::pre_processors::pre_processor::PreProcessor;

    #[test]
    fn test_razor_pre_processor() {
        let (input, expected) = (
            r#"<div class="@@sm:text-red-500">"#,
            r#"<div class=" @sm:text-red-500">"#,
        );
        Razor::test(input, expected);
        Razor::test_extract_contains(input, vec!["@sm:text-red-500"]);
    }

    // https://github.com/tailwindlabs/tailwindcss/issues/17424
    #[test]
    fn test_razor_syntax_with() {
        let (input, expected) = (
            r#"<p class="@("@")md:bg-red-500 @@md:border-green-500 border-8">With 2 elements</p>"#,
            r#"<p class="     @md:bg-red-500  @md:border-green-500 border-8">With 2 elements</p>"#,
        );

        Razor::test(input, expected);
        Razor::test_extract_contains(
            input,
            vec!["@md:bg-red-500", "@md:border-green-500", "border-8"],
        );
    }
}

Domain

Subdomains

Dependencies

  • bstr::ByteSlice
  • crate::extractor::pre_processors::pre_processor::PreProcessor
  • super::Razor

Frequently Asked Questions

What does razor.rs do?
razor.rs is a source file in the tailwindcss codebase, written in rust. It belongs to the OxideEngine domain, PreProcessors subdomain.
What functions are defined in razor.rs?
razor.rs defines 3 function(s): process, test_razor_pre_processor, test_razor_syntax_with.
What does razor.rs depend on?
razor.rs imports 3 module(s): bstr::ByteSlice, crate::extractor::pre_processors::pre_processor::PreProcessor, super::Razor.
Where is razor.rs in the architecture?
razor.rs is located at crates/oxide/src/extractor/pre_processors/razor.rs (domain: OxideEngine, 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