use std::collections::HashMap;
pub fn warn_duplicate_names(names: &[String]) {
let mut index_map: HashMap<String, Vec<usize>> = HashMap::new();
for (idx, name) in names.iter().enumerate() {
let key = name.trim();
if key.is_empty() {
continue;
}
index_map.entry(key.to_owned()).or_default().push(idx + 2);
}
let mut duplicates: Vec<(String, Vec<usize>)> = index_map
.into_iter()
.filter_map(|(k, v)| if v.len() > 1 { Some((k, v)) } else { None })
.collect();
duplicates.sort_by(|a, b| a.0.cmp(&b.0));
if !duplicates.is_empty() {
eprintln!("[WARN] Duplicate names detected (column 'Name'):");
for (dup_name, rows) in duplicates {
let rows_str = rows
.iter()
.map(|r| r.to_string())
.collect::<Vec<_>>()
.join(", ");
eprintln!(" - '{}' at rows {}", dup_name, rows_str);
}
}
}