From ae3a512dd924a3dc076a1abee595cd7c6a6271bd Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Thu, 29 Nov 2018 13:18:15 +0100 Subject: [PATCH] SectionConfig::write - verify data --- src/section_config.rs | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/section_config.rs b/src/section_config.rs index d42de994..1ac017e3 100644 --- a/src/section_config.rs +++ b/src/section_config.rs @@ -82,27 +82,31 @@ impl SectionConfig { let mut done = HashSet::new(); - for id in &config.order { - if config.sections.get(id) == None { continue }; - list.push_back(id); - done.insert(id); + for section_id in &config.order { + if config.sections.get(section_id) == None { continue }; + list.push_back(section_id); + done.insert(section_id); } - for (id, _) in &config.sections { - if done.contains(id) { continue }; - list.push_back(id); + for (section_id, _) in &config.sections { + if done.contains(section_id) { continue }; + list.push_back(section_id); } let mut raw = String::new(); - for id in list { - let (type_name, section_config) = config.sections.get(id).unwrap(); + for section_id in list { + let (type_name, section_config) = config.sections.get(section_id).unwrap(); let plugin = self.plugins.get(type_name).unwrap(); - // fixme: verify json data - println!("REAL WRITE {} {} {:?}\n", id, type_name, section_config); + if let Err(err) = parse_simple_value(§ion_id, &self.id_schema) { + bail!("syntax error in section identifier: {}", err.to_string()); + } - let head = (self.format_section_header)(type_name, id, section_config); + verify_json_object(section_config, &plugin.properties)?; + println!("REAL WRITE {} {} {:?}\n", section_id, type_name, section_config); + + let head = (self.format_section_header)(type_name, section_id, section_config); if !raw.is_empty() { raw += "\n" } @@ -115,7 +119,7 @@ impl SectionConfig { Value::String(v) => v.to_string(), Value::Number(v) => v.to_string(), _ => { - bail!("file {}: got unsupported type in section {} key {}", filename, id, key); + bail!("got unsupported type in section '{}' key '{}'", section_id, key); }, }; raw += "\t";