use crate::languages::LanguageRegistry;
#[must_use]
pub fn count_imports(content: &str, extension: &str) -> usize {
let registry = LanguageRegistry::get();
let Some(lang) = registry.get_by_extension(extension) else {
return 0;
};
let keywords = lang.import_keywords();
content
.lines()
.filter(|line| {
let trimmed = line.trim_start();
keywords.iter().any(|&kw| trimmed.starts_with(kw))
})
.count()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_rs_imports() {
let code = "use std::io;\nuse crate::analyzer;\nfn main() {}";
assert_eq!(count_imports(code, "rs"), 2);
}
#[test]
fn test_py_imports() {
let code = "import os\nfrom sys import path\nprint('hello')";
assert_eq!(count_imports(code, "py"), 2);
}
#[test]
fn test_java_ts_imports() {
let code = "import React from 'react';\nimport { useState } from 'react';";
assert_eq!(count_imports(code, "ts"), 2);
}
}