sub_image/formats/
subs.rs1use std::collections::HashMap;
2use std::fs;
4use std::path::Path;
5
6use crate::formats::sub::SubInfo;
8
9use 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