use std::{collections::HashMap, fs, path::PathBuf};
use serde::Deserialize;
use toml::{self, de::Error};
#[derive(Debug, Clone, Deserialize)]
pub struct PEnvironment{
pub name: String,
pub balise: String,
pub is_paragraph_allowed: bool,
pub image: String,
pub style: String,
}
#[derive(Debug, Clone, Deserialize)]
pub struct PVecEnvironment{
environment: Vec<PEnvironment>,
}
fn load_vec_environement(filename: &PathBuf) -> Result<PVecEnvironment, Error> {
let config: PVecEnvironment = match fs::read_to_string(filename) {
Ok(str) => match toml::from_str(&str){
Ok(value) => value,
Err(error) => panic!("load_vec_environement : cannot parse file {:?}, parsing error {}", filename, error)
},
Err(err) => panic!("load_vec_environement : cannot read file {:?}, error: {}", filename, err)
};
Ok(config)
}
pub fn update_map_environment(map_environement: &mut HashMap<String, PEnvironment>, vec_env_name: &mut Vec<String>, filename: &PathBuf){
let vec_environement: PVecEnvironment = match load_vec_environement(filename) {
Ok(vecenv) => vecenv,
Err(err) => panic!("update_map_environment : cannot read file {:?}, error: {}", filename, err)
};
for env in vec_environement.environment {
map_environement.insert(env.name.clone(), env.clone());
vec_env_name.push(env.name.clone());
}
}