Cleaned up error handling.

[?]
CrEcTsRjb1hHQjHuumqRfqdbVV4X58iLEubi4noaDPFa
Jul 31, 2021, 2:18 AM
UQP5MBQKNSB33CE6JW4L2EEER7ACALH4I5MBNGFYQSZ4FVJEULMQC

Dependencies

  • [2] GMZ22FTM Added mini-tutorial.
  • [3] QMBJ2BAZ Can now handle FromStr.
  • [4] INHPVRSE Made some functions pub (crate). Added opt_vec_value() fn. Improved docs.
  • [5] TMYMF5L6 temp
  • [6] JUK3ONMU Fixed comment parsing bug.
  • [7] BRO5BHI2 Added val() function to KeyTreeRef.
  • [8] N467KW7J Refactored (simplified) errors.
  • [9] KD6IJRPT Improved header documentation.
  • [10] 6ZJX2OQV First commit
  • [11] WPR2A6Y7 Fixed bug in parser. Added opt_vec_at() fn.

Change contents

  • edit in src/parser.rs at line 175
    [3.6299]
    [3.6299]
    // TODO: Check indentation. The following line will error if indent suddenly shifts
    // from 1 to 3.
  • replacement in src/lib.rs at line 60
    [2.1820][2.1820:1858]()
    //! name: self.value("hobbit::name")?
    [2.1820]
    [2.1858]
    //! self.value("a::b::c")?
  • replacement in src/lib.rs at line 64
    [2.1916][2.1916:1947]()
    //! hobbit: self.at("hobbit")?
    [2.1916]
    [2.1947]
    //! self.at("a::b::c")?
  • replacement in src/lib.rs at line 70
    [2.2132][2.2132:2153]()
    //! self.opt_value()
    [2.2132]
    [2.2153]
    //! self.opt_value("a::b::c")?
  • replacement in src/lib.rs at line 74
    [2.2177][2.2177:2195]()
    //! self.opt_at()
    [2.2177]
    [2.2195]
    //! self.opt_at("a::b::c")
  • replacement in src/lib.rs at line 79
    [2.2335][2.2335:2356]()
    //! self.vec_value()
    [2.2335]
    [2.2356]
    //! self.vec_value("a::b::c")?
  • replacement in src/lib.rs at line 83
    [2.2380][2.2380:2398]()
    //! self.vec_at()
    [2.2380]
    [2.2398]
    //! self.vec_at("a::b::c")?
  • replacement in src/lib.rs at line 87
    [2.2460][2.2460:2482]()
    //! self.opt_vec_at()
    [2.2460]
    [2.2482]
    //! self.opt_vec_at("a::b::c")?
  • replacement in src/lib.rs at line 91
    [2.2506][2.2506:2531]()
    //! self.opt_vec_value()
    [2.2506]
    [2.2531]
    //! self.opt_vec_value("a::b::c")?
  • replacement in src/lib.rs at line 205
    [2.3175][2.3175:3274]()
    //! receiving data-structure. Following a path into a keytree involves a scan of differently names
    [2.3175]
    [2.3274]
    //! receiving data-structure. Following a path into a keytree involves a scan of differently named
  • replacement in src/lib.rs at line 472
    [3.4509][3.4509:4591]()
    .map_err(|_| failed_to_parse_value(&token.to_string(), token.line()))
    [3.4509]
    [3.4591]
    .map_err(|_| parse_value_failed(&token.to_string(), token.line()))
  • replacement in src/error.rs at line 19
    [3.9603][3.3533:3602]()
    "[keytree:01] line {}, token [{}]. Bad first segment [{}].",
    [3.9603]
    [3.9664]
    "[keytree] line {}, token [{}]. Bad first segment [{}].",
  • replacement in src/error.rs at line 28
    [3.9807][3.3603:3680]()
    "[keytree:02] line {}, token [{}]. Indentation of {} is incorrect.",
    [3.9807]
    [3.9876]
    "[keytree] line {}, token [{}]. Indentation of {} is incorrect.",
  • replacement in src/error.rs at line 37
    [3.10027][3.3681:3762]()
    "[keytree:03] line {}, token [{}]. Cannot resolve token with siblings.",
    [3.10027]
    [3.10100]
    "[keytree] line {}, token [{}]. Cannot resolve token with siblings.",
  • replacement in src/error.rs at line 45
    [3.3871][3.3871:3940]()
    "[keytree:04:{}:{}] Line {}, token [{}]. Colon before key.",
    [3.3871]
    [3.3940]
    "[keytree:{}:{}] Line {}, token [{}]. Colon before key.",
  • replacement in src/error.rs at line 63
    [3.10485][3.4129:4214]()
    "[keytree:07] line {}, token [{}]. Expected [key:] but found [key: value].",
    [3.10485]
    [3.10562]
    "[keytree] line {}, token [{}]. Expected [key:] but found [key: value].",
  • replacement in src/error.rs at line 71
    [3.10692][3.4215:4300]()
    "[keytree:08] line {}, token [{}]. Expected [key: value] but found [key:].",
    [3.10692]
    [3.10769]
    "[keytree] line {}, token [{}]. Expected [key: value] but found [key:].",
  • replacement in src/error.rs at line 79
    [3.4416][3.4416:4485]()
    "[keytree:09:{}:{}] Expected non-empty collection at [{}].",
    [3.4416]
    [3.4485]
    "[keytree:{}:{}] Expected non-empty collection at [{}].",
  • replacement in src/error.rs at line 88
    [3.10889][3.4551:4639]()
    "[keytree:09] keypath: [{}]. Expected unique token but found multiple tokens.",
    [3.10889]
    [3.10969]
    "[keytree] keypath: [{}]. Expected unique token but found multiple tokens.",
  • replacement in src/error.rs at line 95
    [3.11085][3.4740:4841]()
    "[keytree:10:{}:{}] keypath: [{}]. Expected unique [key: value] but found multiple tokens.",
    [3.11085]
    [3.4841]
    "[keytree:{}:{}] keypath: [{}]. Expected unique [key: value] but found multiple tokens.",
  • replacement in src/error.rs at line 104
    [3.11287][3.4974:5063]()
    "[keytree:11:{}:{}] Keypath [{}]. Expected unique [key: value] but found none.",
    [3.11287]
    [3.5063]
    "[keytree:{}:{}] Keypath [{}]. Expected unique [key: value] but found none.",
  • replacement in src/error.rs at line 113
    [3.5212][3.5212:5300]()
    "[keytree:12:{}:{}] Keypath [{}]. Expected a unique token but found multiple.",
    [3.5212]
    [3.5300]
    "[keytree:{}:{}] Keypath [{}]. Expected a unique token but found multiple.",
  • replacement in src/error.rs at line 120
    [3.43699][3.11520:11586]()
    pub fn failed_to_parse_value(token: &str, line: usize) -> Error {
    [3.43699]
    [3.11586]
    pub fn external(
    code_file: &str,
    code_line: u32,
    msg: &str) -> Error
    {
  • replacement in src/error.rs at line 126
    [3.11605][3.5359:5427](),[3.5427][3.11665:11694](),[3.11665][3.11665:11694]()
    "[keytree:13] line {}, token [{}]. Failed to parse value.",
    line,
    token,
    [3.11605]
    [3.11694]
    "[keytree:{}:{}] External error [{}].",
    code_file,
    code_line,
    msg,
  • replacement in src/error.rs at line 135
    [3.11778][3.5512:5580]()
    "[keytree:14:{}:{}] token {}. First token must be [key:].",
    [3.11778]
    [3.5580]
    "[keytree:{}:{}] token {}. First token must be [key:].",
  • replacement in src/error.rs at line 144
    [3.11957][3.5614:5701]()
    "[keytree:15] line {}, token [{}]. The first segment of [{}] does not match.",
    [3.11957]
    [3.12036]
    "[keytree] line {}, token [{}]. The first segment of [{}] does not match.",
  • replacement in src/error.rs at line 153
    [3.12110][3.5801:5879]()
    "[keytree:16:{}:{}] line {}, token [{}]. Incomplete comment or key.",
    [3.12110]
    [3.5879]
    "[keytree:{}:{}] line {}, token [{}]. Incomplete comment or key.",
  • replacement in src/error.rs at line 163
    [3.12230][3.6002:6069]()
    "[keytree:17:{}:{}] line {}, token [{}]. Incomplete line.",
    [3.12230]
    [3.6069]
    "[keytree:{}:{}] line {}, token [{}]. Incomplete line.",
  • replacement in src/error.rs at line 173
    [3.12433][3.6103:6194]()
    "[keytree:18] line {} token [{}], keypath [{}]. Keypath extends beyond keyvalue.",
    [3.12433]
    [3.12517]
    "[keytree] line {} token [{}], keypath [{}]. Keypath extends beyond keyvalue.",
  • replacement in src/error.rs at line 186
    [3.12842][3.6285:6368]()
    "[keytree:20] line {} token [{}]. Keypath segment {} does not match key.",
    [3.12842]
    [3.12918]
    "[keytree] line {} token [{}]. Keypath segment {} does not match key.",
  • replacement in src/error.rs at line 195
    [3.13069][3.6369:6437]()
    "[keytree:21] line {} token [{}]. Failed to find key [{}]",
    [3.13069]
    [3.13130]
    "[keytree] line {} token [{}]. Failed to find key [{}]",
  • replacement in src/error.rs at line 204
    [3.13262][3.6530:6600]()
    "[keytree:22:{}:{}] line {} token [{}], No colon after key.",
    [3.13262]
    [3.6600]
    "[keytree:{}:{}] line {} token [{}], No colon after key.",
  • replacement in src/error.rs at line 214
    [3.6744][3.6744:6814]()
    "[keytree:23:{}:{}] line {} token [{}]. No space after key.",
    [3.6744]
    [3.6814]
    "[keytree:{}:{}] line {} token [{}]. No space after key.",
  • replacement in src/error.rs at line 224
    [3.6959][3.6959:7018]()
    "[keytree:24:{}:{}] No tokens in parsed keytree.",
    [3.6959]
    [3.7018]
    "[keytree:{}:{}] No tokens in parsed keytree.",
  • replacement in src/error.rs at line 232
    [3.13541][3.7157:7252]()
    "[keytree:25:{}:{}] line {}, token [{}]. Token other than root token as zero indent.",
    [3.13541]
    [3.7252]
    "[keytree:{}:{}] line {}, token [{}]. Token other than root token as zero indent.",
  • edit in src/error.rs at line 235
    [3.7286]
    [3.13622]
    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]