msg_tool\utils/
name_replacement.rs

1//! Name Replacement Utilities
2use crate::types::*;
3use anyhow::Result;
4use std::collections::HashMap;
5
6/// Read Name Replacement Table from CSV
7pub fn read_csv(path: &str) -> Result<HashMap<String, String>> {
8    let mut reader = csv::ReaderBuilder::new()
9        .has_headers(true)
10        .from_path(path)?;
11    let mut map = HashMap::new();
12    for result in reader.deserialize() {
13        let record: NameTableCell = result?;
14        if record.jp_name.is_empty() || record.cn_name.is_empty() {
15            continue;
16        }
17        map.insert(record.jp_name, record.cn_name);
18    }
19    Ok(map)
20}
21
22/// Replace names in the message with the given name table.
23pub fn replace_message(mes: &mut Vec<Message>, name_table: &HashMap<String, String>) {
24    for message in mes.iter_mut() {
25        if let Some(name) = &message.name {
26            if let Some(replace_name) = name_table.get(name) {
27                message.name = Some(replace_name.clone());
28            }
29        }
30    }
31}