parse/
parse.rs

1use rayon::prelude::*;
2use sar_core::renderer::draw::Drawer;
3
4fn main() {
5    let current_dir = std::env::current_dir().unwrap();
6    let examples_dir = current_dir.join("fixture");
7    let target_dir = current_dir.join("sar-core").join("examples").join("result");
8
9    let files = std::fs::read_dir(&examples_dir).unwrap();
10    let drawer = sar_core::SymbolArtDrawer::new();
11    files.par_bridge().for_each(|file| {
12        let file = match file {
13            Ok(file) => file,
14            Err(_) => return,
15        };
16        if file.path().is_dir() || file.path().extension().unwrap() != "sar" {
17            return;
18        }
19
20        let buff = std::fs::read(file.path()).unwrap();
21        let sar = match sar_core::parse(buff) {
22            Ok(sar) => sar,
23            Err(e) => {
24                println!(
25                    "Error parsing {}: {}",
26                    file.file_name().to_str().unwrap(),
27                    e
28                );
29                return;
30            }
31        };
32
33        let image = match drawer.draw(&sar) {
34            Ok(image) => image,
35            Err(e) => {
36                println!("Error drawing {}: {}", file.path().display(), e);
37                return;
38            }
39        };
40        image
41            .save(target_dir.join(format!("{}.png", file.file_name().to_str().unwrap())))
42            .unwrap();
43        println!(
44            "Saved to {}",
45            target_dir
46                .join(format!("{}.png", file.file_name().to_str().unwrap()))
47                .display()
48        );
49    })
50}