sub_image/formats/
sub.rs

1// Standard Uses
2use std::fs;
3use std::path::Path;
4
5// Crate Uses
6
7// External Uses
8use 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