1use std::fs;
3use std::path::Path;
4
5use anyhow::{bail, Result};
9use serde::{Serialize, Deserialize};
10
11
12#[derive(Serialize, Deserialize)]
13pub struct SubInfo {
14 top: u32,
15 bottom: u32,
16 left: u32,
17 right: u32
18}
19
20impl SubInfo {
21 pub fn from_path(path: &Path) -> Result<Self> {
22 let contents = fs::read_to_string(path).expect("Failed to load file");
23 let extension = path.extension().unwrap().to_str().unwrap();
24
25 let sub = match extension {
26 "json5" => { from_json5(contents) }
27 "sub" => { from_sub(contents) }
28 _ => { bail!("No extension found for {}", extension)}
29 }.expect("TODO: panic message");
30
31 Ok(sub)
32 }
33
34}
35
36
37pub fn from_json5(contents: String) -> Result<SubInfo> {
38 let sub = json5::from_str::<SubInfo>(contents.as_str())?;
39
40 Ok(sub)
41}
42
43pub fn from_sub(_contents: String) -> Result<SubInfo> {
44 todo!()
45}
46