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