rl_model/
lib.rs

1#[macro_use]
2extern crate lalrpop_util;
3
4#[macro_use]
5extern crate log;
6
7pub mod model;
8pub mod parser;
9use crate::model::Skillset;
10
11pub fn load_skillset(filename: &str) -> Result<Skillset, parser::RlError> {
12    // Parsing
13    match parser::parse_file(filename) {
14        Ok(mut skillset) => {
15            info!("Parsing OK");
16            // Duplicate
17            match skillset.duplicate() {
18                Ok(_) => info!("Duplicate OK"),
19                Err(e) => {
20                    error!("{}", e);
21                    return Err(e);
22                }
23            }
24            // Resolve
25            match skillset.resolve() {
26                Ok(_) => info!("Resolve OK"),
27                Err(e) => {
28                    error!("{}", e);
29                    return Err(e);
30                }
31            }
32            //
33            Ok(skillset)
34        }
35        Err(e) => {
36            error!("{}", e);
37            return Err(e);
38        }
39    }
40}
41
42// pub fn check(skillset: &skillset::Model) -> bool {
43//     let errors = check_skillset(skillset);
44//     if errors.is_empty() {
45//         info!("Verification OK");
46//         true
47//     } else {
48//         for e in errors.iter() {
49//             error!("{}", e.to_lang(skillset));
50//         }
51//         false
52//     }
53// }