loctree 0.8.16

Structural code intelligence for AI agents. Scan once, query everything.
Documentation
use crate::types::{FileAnalysis, ImportEntry, ImportKind};

use super::regexes::regex_css_import;

pub(crate) fn analyze_css_file(content: &str, relative: String) -> FileAnalysis {
    let mut analysis = FileAnalysis::new(relative);
    for caps in regex_css_import().captures_iter(content) {
        let source = caps.get(1).map(|m| m.as_str()).unwrap_or("").to_string();
        analysis
            .imports
            .push(ImportEntry::new(source, ImportKind::Static));
    }

    analysis
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn parses_css_imports() {
        let content = r#"
        @import "base.css";
        @import url("theme.css");
        "#;
        let analysis = analyze_css_file(content, "styles/main.css".to_string());
        assert_eq!(analysis.imports.len(), 2);
        assert_eq!(analysis.imports[0].source, "base.css");
        assert_eq!(analysis.imports[1].source, "theme.css");
    }
}