provenant/utils/
generated.rs1use std::fs;
2use std::io::Result;
3use std::path::Path;
4
5const GENERATED_KEYWORDS_LOWERED: &[&str] = &[
6 "generated by",
7 "auto-generated",
8 "automatically generated",
9 "generated on",
10 "last generated on",
11 "do not edit this file",
12 "it is machine generated",
13 "automatically created by",
14 "following schema fragment specifies the",
15 "this code is generated",
16 "generated by cython",
17 "this file was automatically generated by",
18 "this file is generated by",
19 "generated file, do not edit",
20 "this is an autogenerated file",
21 "generated by the protocol buffer compiler",
22 "generated code -- do not edit",
23 "makefile.in generated by automake",
24 "generated automatically by aclocal",
25 "generated by gnu autoconf",
26 "this file was automatically generated",
27];
28
29pub fn generated_code_hints(path: &Path) -> Result<Vec<String>> {
30 let content = fs::read(path)?;
31 Ok(generated_code_hints_from_bytes(&content))
32}
33
34pub fn generated_code_hints_from_bytes(content: &[u8]) -> Vec<String> {
35 let text = String::from_utf8_lossy(content);
36 let mut hints = Vec::new();
37
38 for line in text.lines().take(150) {
39 let lowered = line.trim().to_ascii_lowercase();
40 if GENERATED_KEYWORDS_LOWERED
41 .iter()
42 .any(|keyword| lowered.contains(keyword))
43 {
44 hints.push(lowered.chars().take(100).collect());
45 }
46 }
47
48 hints
49}