readme_example/
readme_example.rs1extern crate specker;
2
3use std::collections::HashMap;
4use std::fs;
5use std::path::PathBuf;
6
7fn main() {
8    let src_dir: PathBuf = PathBuf::from(file!()).parent().map(|p| p.into()).unwrap();
9    let spec_dir = src_dir.join("spec");
10
11    for maybe_spec in specker::walk_spec_dir(
12        &spec_dir,
13        "txt",
14        specker::Options {
15            skip_lines: "..",
16            marker: "##",
17            var_start: "${",
18            var_end: "}",
19        },
20    ) {
21        let spec_path = maybe_spec.unwrap_or_else(|e| {
22            panic!("\n{}", specker::display_error(&e));
24        });
25
26        for (item, input_file_name) in spec_path.spec.iter().filter_map(|item| {
28            item.get_param("file")
29                .map(|param_value| (item, param_value))
30        }) {
31            let path = spec_dir.join(input_file_name);
32            let mut file =
33                fs::File::open(&path).expect(&format!("failed to open file {:?}", &path));
34
35            if let Err(e) = item.match_contents(&mut file, &HashMap::new()) {
36                panic!("\n{}", specker::display_error_for_file(&path, &e));
38            }
39        }
40    }
41
42    println!("example succeeded, try to modify /spec files to see some errors")
43}