use serde_derive::Deserialize;
use serde_xml_rs::from_reader;
use std::fs::File;
use std::io::BufReader;
use std::path::Path;
use crate::error::{Result, RLibError};
use super::*;
#[derive(Clone, Debug, Deserialize)]
#[serde(rename = "dataroot")]
pub struct RawLocalisableFields {
#[serde(rename = "TExc_LocalisableFields")]
pub fields: Vec<RawLocalisableField>,
}
#[derive(Clone, Debug, Deserialize)]
#[serde(rename = "datafield")]
pub struct RawLocalisableField {
pub table_name: String,
pub field: String,
}
impl RawLocalisableFields {
pub fn read(raw_data_path: &Path, version: i16) -> Result<Self> {
match version {
2 | 1 => {
let localisable_fields_path = get_raw_localisable_fields_path(raw_data_path, version)?;
let localisable_fields_file = BufReader::new(File::open(localisable_fields_path)?);
from_reader(localisable_fields_file).map_err(From::from)
}
_ => Err(RLibError::AssemblyKitUnsupportedVersion(version))
}
}
}