Home / File/ markdown.rs — tailwindcss Source File

markdown.rs — tailwindcss Source File

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

File rust OxideEngine PreProcessors 3 imports 2 functions

Entity Profile

Dependency Diagram

graph LR
  da76d816_5e8f_2461_5d6f_e22ab33fa549["markdown.rs"]
  c6d6e69d_306a_e6df_694f_46156cc789cf["super::Markdown"]
  da76d816_5e8f_2461_5d6f_e22ab33fa549 --> c6d6e69d_306a_e6df_694f_46156cc789cf
  e4e20bdf_ad1e_e4a0_5cba_d0f5a5db787e["crate::cursor"]
  da76d816_5e8f_2461_5d6f_e22ab33fa549 --> e4e20bdf_ad1e_e4a0_5cba_d0f5a5db787e
  a55fec3d_3fee_4b46_48f2_43f3844c61e4["crate::extractor::pre_processors::pre_processor::PreProcessor"]
  da76d816_5e8f_2461_5d6f_e22ab33fa549 --> a55fec3d_3fee_4b46_48f2_43f3844c61e4
  style da76d816_5e8f_2461_5d6f_e22ab33fa549 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

use crate::cursor;
use crate::extractor::pre_processors::pre_processor::PreProcessor;

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

impl PreProcessor for Markdown {
    fn process(&self, content: &[u8]) -> Vec<u8> {
        let len = content.len();
        let mut result = content.to_vec();
        let mut cursor = cursor::Cursor::new(content);

        let mut in_directive = false;

        while cursor.pos < len {
            match (in_directive, cursor.curr) {
                (false, b'{') => {
                    result[cursor.pos] = b' ';
                    in_directive = true;
                }
                (true, b'}') => {
                    result[cursor.pos] = b' ';
                    in_directive = false;
                }
                (true, b'.') => {
                    result[cursor.pos] = b' ';
                }
                _ => {}
            }

            cursor.advance();
        }

        result
    }
}

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

    #[test]
    fn test_markdown_pre_processor() {
        for (input, expected) in [
            // Convert dots to spaces inside markdown inline directives
            (
                ":span[Some Text]{.text-gray-500}",
                ":span[Some Text]  text-gray-500 ",
            ),
            (
                ":span[Some Text]{.text-gray-500.bg-red-500}",
                ":span[Some Text]  text-gray-500 bg-red-500 ",
            ),
            (
                ":span[Some Text]{#myId .my-class key=val key2='val 2'}",
                ":span[Some Text] #myId  my-class key=val key2='val 2' ",
            ),
        ] {
            Markdown::test(input, expected);
        }
    }
}

Domain

Subdomains

Dependencies

  • crate::cursor
  • crate::extractor::pre_processors::pre_processor::PreProcessor
  • super::Markdown

Frequently Asked Questions

What does markdown.rs do?
markdown.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 markdown.rs?
markdown.rs defines 2 function(s): process, test_markdown_pre_processor.
What does markdown.rs depend on?
markdown.rs imports 3 module(s): crate::cursor, crate::extractor::pre_processors::pre_processor::PreProcessor, super::Markdown.
Where is markdown.rs in the architecture?
markdown.rs is located at crates/oxide/src/extractor/pre_processors/markdown.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