Cleaned up error handling.
[?]
CrEcTsRjb1hHQjHuumqRfqdbVV4X58iLEubi4noaDPFa
Jul 31, 2021, 2:18 AM
UQP5MBQKNSB33CE6JW4L2EEER7ACALH4I5MBNGFYQSZ4FVJEULMQCDependencies
- [2]
GMZ22FTMAdded mini-tutorial. - [3]
QMBJ2BAZCan now handle FromStr. - [4]
INHPVRSEMade some functions pub (crate). Added opt_vec_value() fn. Improved docs. - [5]
TMYMF5L6temp - [6]
JUK3ONMUFixed comment parsing bug. - [7]
BRO5BHI2Added val() function to KeyTreeRef. - [8]
N467KW7JRefactored (simplified) errors. - [9]
KD6IJRPTImproved header documentation. - [10]
6ZJX2OQVFirst commit - [11]
WPR2A6Y7Fixed bug in parser. Added opt_vec_at() fn.
Change contents
- edit in src/parser.rs at line 175
// TODO: Check indentation. The following line will error if indent suddenly shifts// from 1 to 3. - replacement in src/lib.rs at line 60
//! name: self.value("hobbit::name")?//! self.value("a::b::c")? - replacement in src/lib.rs at line 64
//! hobbit: self.at("hobbit")?//! self.at("a::b::c")? - replacement in src/lib.rs at line 70
//! self.opt_value()//! self.opt_value("a::b::c")? - replacement in src/lib.rs at line 74
//! self.opt_at()//! self.opt_at("a::b::c") - replacement in src/lib.rs at line 79
//! self.vec_value()//! self.vec_value("a::b::c")? - replacement in src/lib.rs at line 83
//! self.vec_at()//! self.vec_at("a::b::c")? - replacement in src/lib.rs at line 87
//! self.opt_vec_at()//! self.opt_vec_at("a::b::c")? - replacement in src/lib.rs at line 91
//! self.opt_vec_value()//! self.opt_vec_value("a::b::c")? - replacement in src/lib.rs at line 205
//! receiving data-structure. Following a path into a keytree involves a scan of differently names//! receiving data-structure. Following a path into a keytree involves a scan of differently named - replacement in src/lib.rs at line 472
.map_err(|_| failed_to_parse_value(&token.to_string(), token.line())).map_err(|_| parse_value_failed(&token.to_string(), token.line())) - replacement in src/error.rs at line 19
"[keytree:01] line {}, token [{}]. Bad first segment [{}].","[keytree] line {}, token [{}]. Bad first segment [{}].", - replacement in src/error.rs at line 28
"[keytree:02] line {}, token [{}]. Indentation of {} is incorrect.","[keytree] line {}, token [{}]. Indentation of {} is incorrect.", - replacement in src/error.rs at line 37
"[keytree:03] line {}, token [{}]. Cannot resolve token with siblings.","[keytree] line {}, token [{}]. Cannot resolve token with siblings.", - replacement in src/error.rs at line 45
"[keytree:04:{}:{}] Line {}, token [{}]. Colon before key.","[keytree:{}:{}] Line {}, token [{}]. Colon before key.", - replacement in src/error.rs at line 63
"[keytree:07] line {}, token [{}]. Expected [key:] but found [key: value].","[keytree] line {}, token [{}]. Expected [key:] but found [key: value].", - replacement in src/error.rs at line 71
"[keytree:08] line {}, token [{}]. Expected [key: value] but found [key:].","[keytree] line {}, token [{}]. Expected [key: value] but found [key:].", - replacement in src/error.rs at line 79
"[keytree:09:{}:{}] Expected non-empty collection at [{}].","[keytree:{}:{}] Expected non-empty collection at [{}].", - replacement in src/error.rs at line 88
"[keytree:09] keypath: [{}]. Expected unique token but found multiple tokens.","[keytree] keypath: [{}]. Expected unique token but found multiple tokens.", - replacement in src/error.rs at line 95
"[keytree:10:{}:{}] keypath: [{}]. Expected unique [key: value] but found multiple tokens.","[keytree:{}:{}] keypath: [{}]. Expected unique [key: value] but found multiple tokens.", - replacement in src/error.rs at line 104
"[keytree:11:{}:{}] Keypath [{}]. Expected unique [key: value] but found none.","[keytree:{}:{}] Keypath [{}]. Expected unique [key: value] but found none.", - replacement in src/error.rs at line 113
"[keytree:12:{}:{}] Keypath [{}]. Expected a unique token but found multiple.","[keytree:{}:{}] Keypath [{}]. Expected a unique token but found multiple.", - replacement in src/error.rs at line 120
pub fn failed_to_parse_value(token: &str, line: usize) -> Error {pub fn external(code_file: &str,code_line: u32,msg: &str) -> Error{ - replacement in src/error.rs at line 126
"[keytree:13] line {}, token [{}]. Failed to parse value.",line,token,"[keytree:{}:{}] External error [{}].",code_file,code_line,msg, - replacement in src/error.rs at line 135
"[keytree:14:{}:{}] token {}. First token must be [key:].","[keytree:{}:{}] token {}. First token must be [key:].", - replacement in src/error.rs at line 144
"[keytree:15] line {}, token [{}]. The first segment of [{}] does not match.","[keytree] line {}, token [{}]. The first segment of [{}] does not match.", - replacement in src/error.rs at line 153
"[keytree:16:{}:{}] line {}, token [{}]. Incomplete comment or key.","[keytree:{}:{}] line {}, token [{}]. Incomplete comment or key.", - replacement in src/error.rs at line 163
"[keytree:17:{}:{}] line {}, token [{}]. Incomplete line.","[keytree:{}:{}] line {}, token [{}]. Incomplete line.", - replacement in src/error.rs at line 173
"[keytree:18] line {} token [{}], keypath [{}]. Keypath extends beyond keyvalue.","[keytree] line {} token [{}], keypath [{}]. Keypath extends beyond keyvalue.", - replacement in src/error.rs at line 186
"[keytree:20] line {} token [{}]. Keypath segment {} does not match key.","[keytree] line {} token [{}]. Keypath segment {} does not match key.", - replacement in src/error.rs at line 195
"[keytree:21] line {} token [{}]. Failed to find key [{}]","[keytree] line {} token [{}]. Failed to find key [{}]", - replacement in src/error.rs at line 204
"[keytree:22:{}:{}] line {} token [{}], No colon after key.","[keytree:{}:{}] line {} token [{}], No colon after key.", - replacement in src/error.rs at line 214
"[keytree:23:{}:{}] line {} token [{}]. No space after key.","[keytree:{}:{}] line {} token [{}]. No space after key.", - replacement in src/error.rs at line 224
"[keytree:24:{}:{}] No tokens in parsed keytree.","[keytree:{}:{}] No tokens in parsed keytree.", - replacement in src/error.rs at line 232
"[keytree:25:{}:{}] line {}, token [{}]. Token other than root token as zero indent.","[keytree:{}:{}] line {}, token [{}]. Token other than root token as zero indent.", - edit in src/error.rs at line 235
line,token,))}pub fn parse_value_failed(token: &str, line: usize) -> Error {Error(format!("[keytree] line [{}], token [{}]. Failed to parse value.", - edit in src/error.rs at line 247[3.4574]