pub mod attr_classifier;
pub mod path_classifier;
pub mod rules;
use std::path::Path;
use crate::{
config::Config,
types::{CodeType, SemanticUnit},
};
pub fn classify_unit(unit: &SemanticUnit, path: &Path, config: &Config) -> CodeType {
if config.is_build_script(path) {
return CodeType::BuildScript;
}
if path_classifier::is_example_path(path) {
return CodeType::Example;
}
if path_classifier::is_bench_path(path) {
return CodeType::Benchmark;
}
if config.is_test_path(path) {
return CodeType::Test;
}
if attr_classifier::is_bench_unit(unit) {
return CodeType::Benchmark;
}
if attr_classifier::is_test_unit(unit) {
return CodeType::Test;
}
if attr_classifier::is_in_test_module(unit) {
return CodeType::TestUtility;
}
if attr_classifier::has_test_feature(unit, config) {
return CodeType::TestUtility;
}
CodeType::Production
}