pub(crate) fn is_code_file(path: &str) -> bool {
let basename = path.rsplit('/').next().unwrap_or(path);
const EXCLUDED_NAMES: &[&str] = &[
"README.md",
"README",
"readme.md",
"CHANGELOG.md",
"CHANGES.md",
"HISTORY.md",
"LICENSE",
"LICENSE.md",
"LICENSE-MIT",
"LICENSE-APACHE",
"CONTRIBUTING.md",
"CODE_OF_CONDUCT.md",
"AGENTS.md",
"CLAUDE.md",
"CODEX.md",
".gitignore",
".gitattributes",
];
if EXCLUDED_NAMES.contains(&basename) {
return false;
}
const CODE_EXTENSIONS: &[&str] = &[
"rs", "go", "py", "ts", "tsx", "js", "jsx", "java", "kt", "swift", "c", "cpp", "h", "hpp",
"cs", "rb", "php", "ex", "exs", "zig", "hs", "ml", "scala", "clj", "toml", "yaml", "yml",
"json", "sql", "sh", "bash", "proto",
];
match path.rsplit('.').next() {
Some(ext) => CODE_EXTENSIONS.contains(&ext),
None => false,
}
}