sherlock_io/patterns/
mod.rs1pub mod nodejs;
2pub mod python;
3pub mod rust;
4pub mod java;
5pub mod cpp;
6pub mod web;
7pub mod general;
8pub mod dotnet;
9pub mod go;
10pub mod ruby;
11pub mod php;
12pub mod swift;
13pub mod kotlin;
14pub mod haskell;
15pub mod elixir;
16pub mod julia;
17pub mod lua;
18pub mod zig;
19pub mod clojure;
20pub mod erlang;
21pub mod dart;
22pub mod perl;
23pub mod r;
24pub mod matlab;
25
26use regex::Regex;
27use nodejs::NodejsPatterns;
28use python::PythonPatterns;
29use rust::RustPatterns;
30use java::JavaPatterns;
31use cpp::CppPatterns;
32use web::WebPatterns;
33use general::GeneralPatterns;
34use dotnet::DotnetPatterns;
35use go::GoPatterns;
36use ruby::RubyPatterns;
37use php::PhpPatterns;
38use swift::SwiftPatterns;
39use kotlin::KotlinPatterns;
40use haskell::HaskellPatterns;
41use elixir::ElixirPatterns;
42use julia::JuliaPatterns;
43use lua::LuaPatterns;
44use zig::ZigPatterns;
45use clojure::ClojurePatterns;
46use erlang::ErlangPatterns;
47use dart::DartPatterns;
48use perl::PerlPatterns;
49use r::RPatterns;
50use matlab::MatlabPatterns;
51
52pub struct ExternalPatterns {
53 patterns: Vec<Regex>,
54}
55
56impl ExternalPatterns {
57 pub fn new() -> Self {
58 let mut patterns = Vec::new();
59
60 let nodejs = NodejsPatterns::new();
62 patterns.extend(nodejs.get_external_patterns().iter().cloned());
63
64 let python = PythonPatterns::new();
65 patterns.extend(python.get_external_patterns().iter().cloned());
66
67 let rust = RustPatterns::new();
68 patterns.extend(rust.get_external_patterns().iter().cloned());
69
70 let java = JavaPatterns::new();
71 patterns.extend(java.get_external_patterns().iter().cloned());
72
73 let cpp = CppPatterns::new();
74 patterns.extend(cpp.get_external_patterns().iter().cloned());
75
76 let web = WebPatterns::new();
77 patterns.extend(web.get_external_patterns().iter().cloned());
78
79 let general = GeneralPatterns::new();
80 patterns.extend(general.get_external_patterns().iter().cloned());
81
82 let dotnet = DotnetPatterns::new();
84 patterns.extend(dotnet.get_external_patterns().iter().cloned());
85
86 let go = GoPatterns::new();
87 patterns.extend(go.get_external_patterns().iter().cloned());
88
89 let ruby = RubyPatterns::new();
90 patterns.extend(ruby.get_external_patterns().iter().cloned());
91
92 let php = PhpPatterns::new();
93 patterns.extend(php.get_external_patterns().iter().cloned());
94
95 let swift = SwiftPatterns::new();
96 patterns.extend(swift.get_external_patterns().iter().cloned());
97
98 let kotlin = KotlinPatterns::new();
99 patterns.extend(kotlin.get_external_patterns().iter().cloned());
100
101 let haskell = HaskellPatterns::new();
102 patterns.extend(haskell.get_external_patterns().iter().cloned());
103
104 let elixir = ElixirPatterns::new();
105 patterns.extend(elixir.get_external_patterns().iter().cloned());
106
107 let julia = JuliaPatterns::new();
108 patterns.extend(julia.get_external_patterns().iter().cloned());
109
110 let lua = LuaPatterns::new();
111 patterns.extend(lua.get_external_patterns().iter().cloned());
112
113 let zig = ZigPatterns::new();
114 patterns.extend(zig.get_external_patterns().iter().cloned());
115
116 let clojure = ClojurePatterns::new();
117 patterns.extend(clojure.get_external_patterns().iter().cloned());
118
119 let erlang = ErlangPatterns::new();
120 patterns.extend(erlang.get_external_patterns().iter().cloned());
121
122 let dart = DartPatterns::new();
123 patterns.extend(dart.get_external_patterns().iter().cloned());
124
125 let perl = PerlPatterns::new();
126 patterns.extend(perl.get_external_patterns().iter().cloned());
127
128 let r = RPatterns::new();
129 patterns.extend(r.get_external_patterns().iter().cloned());
130
131 let matlab = MatlabPatterns::new();
132 patterns.extend(matlab.get_external_patterns().iter().cloned());
133
134 Self { patterns }
135 }
136
137 pub fn matches(&self, path_str: &str) -> bool {
138 self.patterns.iter().any(|pattern| pattern.is_match(path_str))
139 }
140}
141
142pub struct CodeExtensions {
143 extensions: Vec<String>,
144}
145
146impl CodeExtensions {
147 pub fn new() -> Self {
148 let mut extensions = Vec::new();
149
150 let nodejs = NodejsPatterns::new();
152 extensions.extend(nodejs.get_extensions().iter().cloned());
153
154 let python = PythonPatterns::new();
155 extensions.extend(python.get_extensions().iter().cloned());
156
157 let rust = RustPatterns::new();
158 extensions.extend(rust.get_extensions().iter().cloned());
159
160 let java = JavaPatterns::new();
161 extensions.extend(java.get_extensions().iter().cloned());
162
163 let cpp = CppPatterns::new();
164 extensions.extend(cpp.get_extensions().iter().cloned());
165
166 let web = WebPatterns::new();
167 extensions.extend(web.get_extensions().iter().cloned());
168
169 let general = GeneralPatterns::new();
170 extensions.extend(general.get_extensions().iter().cloned());
171
172 let dotnet = DotnetPatterns::new();
174 extensions.extend(dotnet.get_extensions().iter().cloned());
175
176 let go = GoPatterns::new();
177 extensions.extend(go.get_extensions().iter().cloned());
178
179 let ruby = RubyPatterns::new();
180 extensions.extend(ruby.get_extensions().iter().cloned());
181
182 let php = PhpPatterns::new();
183 extensions.extend(php.get_extensions().iter().cloned());
184
185 let swift = SwiftPatterns::new();
186 extensions.extend(swift.get_extensions().iter().cloned());
187
188 let kotlin = KotlinPatterns::new();
189 extensions.extend(kotlin.get_extensions().iter().cloned());
190
191 let haskell = HaskellPatterns::new();
192 extensions.extend(haskell.get_extensions().iter().cloned());
193
194 let elixir = ElixirPatterns::new();
195 extensions.extend(elixir.get_extensions().iter().cloned());
196
197 let julia = JuliaPatterns::new();
198 extensions.extend(julia.get_extensions().iter().cloned());
199
200 let lua = LuaPatterns::new();
201 extensions.extend(lua.get_extensions().iter().cloned());
202
203 let zig = ZigPatterns::new();
204 extensions.extend(zig.get_extensions().iter().cloned());
205
206 let clojure = ClojurePatterns::new();
207 extensions.extend(clojure.get_extensions().iter().cloned());
208
209 let erlang = ErlangPatterns::new();
210 extensions.extend(erlang.get_extensions().iter().cloned());
211
212 let dart = DartPatterns::new();
213 extensions.extend(dart.get_extensions().iter().cloned());
214
215 let perl = PerlPatterns::new();
216 extensions.extend(perl.get_extensions().iter().cloned());
217
218 let r = RPatterns::new();
219 extensions.extend(r.get_extensions().iter().cloned());
220
221 let matlab = MatlabPatterns::new();
222 extensions.extend(matlab.get_extensions().iter().cloned());
223
224 Self { extensions }
225 }
226
227 pub fn contains(&self, extension: &str) -> bool {
228 self.extensions.contains(&extension.to_string())
229 }
230
231 pub fn get_script_names() -> Vec<&'static str> {
232 let mut script_names = Vec::new();
233
234 script_names.extend(NodejsPatterns::get_script_names());
235 script_names.extend(PythonPatterns::get_script_names());
236 script_names.extend(RustPatterns::get_script_names());
237 script_names.extend(JavaPatterns::get_script_names());
238 script_names.extend(CppPatterns::get_script_names());
239 script_names.extend(WebPatterns::get_script_names());
240 script_names.extend(GeneralPatterns::get_script_names());
241 script_names.extend(DotnetPatterns::get_script_names());
242 script_names.extend(GoPatterns::get_script_names());
243 script_names.extend(RubyPatterns::get_script_names());
244 script_names.extend(PhpPatterns::get_script_names());
245 script_names.extend(SwiftPatterns::get_script_names());
246 script_names.extend(KotlinPatterns::get_script_names());
247 script_names.extend(HaskellPatterns::get_script_names());
248 script_names.extend(ElixirPatterns::get_script_names());
249 script_names.extend(JuliaPatterns::get_script_names());
250 script_names.extend(LuaPatterns::get_script_names());
251 script_names.extend(ZigPatterns::get_script_names());
252 script_names.extend(ClojurePatterns::get_script_names());
253 script_names.extend(ErlangPatterns::get_script_names());
254 script_names.extend(DartPatterns::get_script_names());
255 script_names.extend(PerlPatterns::get_script_names());
256 script_names.extend(RPatterns::get_script_names());
257 script_names.extend(MatlabPatterns::get_script_names());
258
259 script_names
260 }
261}
262
263