From 04025e070756914f838a7d85f6e70e9e134a8c74 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 14 Apr 2024 13:22:05 -0400 Subject: [PATCH] Make EXL parsing more resilient It now stops tripping up over basic parsing errors and comments. --- src/exl.rs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/exl.rs b/src/exl.rs index 91c4db2..e3e185e 100755 --- a/src/exl.rs +++ b/src/exl.rs @@ -24,18 +24,20 @@ impl EXL { let cursor = Cursor::new(buffer); let reader = BufReader::new(cursor); - for (_, line) in reader.lines().enumerate() { + for line in reader.lines() { // now parse the line! - let unwrap = line.unwrap(); - let (name, value) = unwrap.split_once(',').unwrap(); + if let Ok(line) = line { + if let Some((name, value)) = line.split_once(',') { + let parsed_value: i32 = value.parse().unwrap(); - let parsed_value: i32 = value.parse().unwrap(); - - if name == "EXLT" { - exl.version = parsed_value; - } else { - exl.entries.push((name.parse().unwrap(), parsed_value)); + if name == "EXLT" { + exl.version = parsed_value; + } else if !name.starts_with('#') { + // Ignore rows with comments + exl.entries.push((name.parse().unwrap(), parsed_value)); + } + } } }