pub(super) struct GeneratedHelpers;
impl GeneratedHelpers {
pub(super) fn is_generated(text: &str) -> bool {
text.lines().take(HEADER_LINES).any(|line| {
let line = line.to_lowercase();
MARKERS.iter().any(|marker| line.contains(marker))
})
}
}
const HEADER_LINES: usize = 5;
const MARKERS: &[&str] = &[
"@generated",
"do not edit",
"code generated",
"auto-generated",
"autogenerated",
"automatically generated",
];
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn detects_headers_only_at_the_top() {
assert!(GeneratedHelpers::is_generated(
"// Code generated by protoc-gen-go. DO NOT EDIT.\npackage p\n"
));
assert!(GeneratedHelpers::is_generated("# @generated by tool\n"));
assert!(!GeneratedHelpers::is_generated("fn main() {}\n"));
let late = format!("{}// @generated\n", "\n".repeat(HEADER_LINES));
assert!(!GeneratedHelpers::is_generated(&late));
}
}