use std::path::PathBuf;
const DATA_CACHED: &str = "data_cached";
pub fn data_dir_for(speaker: &str) -> PathBuf {
let mut p = PathBuf::from(DATA_CACHED);
p.push("speakers");
p.push("org.spinorama");
p.push(sanitize_dir_name(speaker));
p
}
pub fn sanitize_dir_name(name: &str) -> String {
let mut out = String::with_capacity(name.len());
for ch in name.chars() {
if ch.is_ascii_alphanumeric() || ch == ' ' || ch == '-' || ch == '_' {
out.push(ch);
} else {
out.push('_');
}
}
out.trim().trim_matches('_').to_string()
}
pub fn measurement_filename(measurement: &str) -> String {
let safe = measurement.replace(['/', '\\'], "-");
format!("{}.json", safe)
}