aboutsummaryrefslogtreecommitdiff
path: root/src/config.rs
diff options
context:
space:
mode:
authorjan <jan@ruken.pw>2016-10-01 10:45:55 (UTC)
committerjan <jan@ruken.pw>2016-10-01 10:45:55 (UTC)
commitad63b49b94bf4b4596e6420e37d265a57b77d731 (patch)
tree73234b1a5f4d34e6b1771e4309374fd05bebd881 /src/config.rs
parenta6b37fa5e1bd505adfae4888896be2a3aa49ec3a (diff)
config entfernt, extra details parsen
Diffstat (limited to 'src/config.rs')
-rw-r--r--src/config.rs63
1 files changed, 0 insertions, 63 deletions
diff --git a/src/config.rs b/src/config.rs
deleted file mode 100644
index f491852..0000000
--- a/src/config.rs
+++ /dev/null
@@ -1,63 +0,0 @@
1extern crate yaml_rust;
2use self::yaml_rust::YamlLoader;
3
4use std::collections::HashMap;
5use std::fs::File;
6use std::io::prelude::*;
7
8pub struct SectionConfig {
9 pub pattern: String,
10 pub groups: Vec<String>,
11}
12
13pub struct Config {
14 pub sections: HashMap<String, SectionConfig>,
15}
16
17impl Config {
18 pub fn from_file(p: &str, expected: Vec<&'static str>) -> Self {
19 let mut f = File::open(p).unwrap();
20 let mut buf = String::new();
21 f.read_to_string(&mut buf).unwrap();
22 let docs = YamlLoader::load_from_str(&buf).unwrap();
23
24 let doc = &docs[0];
25
26 let mut sections: HashMap<String, SectionConfig> = HashMap::new();
27 for (name, entry) in doc["sections"].as_hash().unwrap() {
28 sections.insert(name.as_str().unwrap().into(),
29 SectionConfig {
30 pattern: entry["pattern"].as_str().unwrap().into(),
31 groups: entry["groups"]
32 .as_vec()
33 .unwrap()
34 .into_iter()
35 .map(|v| v.as_str().unwrap().into())
36 .collect(),
37 });
38 }
39
40
41 for ex in &expected {
42 if !sections.contains_key(&ex.to_string()) {
43 panic!("config: section '{}' not found", ex);
44 }
45 }
46
47 {
48 let traits = &sections["traits"];
49 if !traits.groups.contains(&"indexed_raw".to_string()) {
50 panic!("config: no group 'indexed_raw' found in section 'traits'");
51 }
52 if !traits.groups.contains(&"official_raw".to_string()) {
53 panic!("config: no group 'official_raw' found in section 'traits'");
54 }
55 let tags = &sections["tags"];
56 if !tags.groups.contains(&"tags_raw".to_string()) {
57 panic!("config: no group 'tags_raw' found in section 'tags'");
58 }
59 }
60
61 Config { sections: sections }
62 }
63}