sub_image/formats/
subs.rs

1use std::collections::HashMap;
2// Standard Uses
3use std::fs;
4use std::path::Path;
5
6// Crate Uses
7use crate::formats::sub::SubInfo;
8
9// External Uses
10use anyhow::{bail, Result};
11use serde::{Serialize, Deserialize};
12
13
14#[derive(Serialize, Deserialize)]
15pub struct GroupSubInfo {
16    image: String,
17    size: [u32; 2],
18    pub(crate) subs: HashMap<String, SubInfo>
19}
20
21impl GroupSubInfo {
22    pub fn from_path(path: &Path) -> Result<Self> {
23        let contents = fs::read_to_string(path).expect("Failed to load file");
24        let extension = path.extension().unwrap().to_str().unwrap();
25
26        let sub = match extension {
27            "json5" => { from_json5(contents) }
28            _ => { bail!("No extension found for {}", extension)}
29        }.expect("Could not parse subs group");
30
31        Ok(sub)
32    }
33
34}
35
36
37pub fn from_json5(contents: String) -> Result<GroupSubInfo> {
38    let sub = json5::from_str::<GroupSubInfo>(contents.as_str())?;
39
40    Ok(sub)
41}
42