sherlock_io/patterns/
cpp.rs1use regex::Regex;
2
3pub struct CppPatterns {
4 external_patterns: Vec<Regex>,
5 cache_patterns: Vec<Regex>,
6 extensions: Vec<String>,
7}
8
9impl CppPatterns {
10 pub fn new() -> Self {
11 let external_patterns = vec![
12 Regex::new(r"\.o$").unwrap(),
13 Regex::new(r"\.so$").unwrap(),
14 Regex::new(r"\.a$").unwrap(),
15 Regex::new(r"\.dylib$").unwrap(),
16 Regex::new(r"\.dll$").unwrap(),
17 Regex::new(r"\.exe$").unwrap(),
18 Regex::new(r"\.obj$").unwrap(),
19 Regex::new(r"\.lib$").unwrap(),
20 Regex::new(r"\.pdb$").unwrap(),
21 ];
22
23 let cache_patterns = vec![
24 Regex::new(r"\.ccache/").unwrap(),
25 Regex::new(r"\.sccache/").unwrap(),
26 Regex::new(r"build/").unwrap(),
27 Regex::new(r"cmake-build-").unwrap(),
28 Regex::new(r"CMakeFiles/").unwrap(),
29 Regex::new(r"CMakeCache\.txt").unwrap(),
30 ];
31
32 let extensions = vec![
33 "c".to_string(), "cpp".to_string(), "cc".to_string(),
34 "cxx".to_string(), "h".to_string(), "hpp".to_string(),
35 "hxx".to_string(), "hh".to_string(), "inl".to_string(),
36 ];
37
38 Self {
39 external_patterns,
40 cache_patterns,
41 extensions,
42 }
43 }
44
45 pub fn get_external_patterns(&self) -> &[Regex] {
46 &self.external_patterns
47 }
48
49 pub fn get_cache_patterns(&self) -> &[Regex] {
50 &self.cache_patterns
51 }
52
53 pub fn get_extensions(&self) -> &[String] {
54 &self.extensions
55 }
56
57 pub fn get_script_names() -> Vec<&'static str> {
58 vec![
59 "Makefile", "makefile", "GNUmakefile", "CMakeLists.txt",
60 "configure", "autogen.sh", "bootstrap", "build.sh",
61 "meson.build", "SConstruct", "SConscript",
62 ]
63 }
64}