diff options
-rw-r--r-- | src/khline.rs | 2 | ||||
-rw-r--r-- | src/seqfile.rs | 20 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/khline.rs b/src/khline.rs index a1fb825..2cf6cac 100644 --- a/src/khline.rs +++ b/src/khline.rs @@ -7,7 +7,7 @@ use icalwrap::{IcalVCalendar,IcalVEvent,IcalTime}; use utils::{fileutil,dateutil}; use defaults; -#[derive(PartialEq,Eq)] +#[derive(PartialEq,Eq,Debug)] pub struct KhLine { pub path: PathBuf, time: Option<IcalTime>, diff --git a/src/seqfile.rs b/src/seqfile.rs index e2c2ddf..5994a33 100644 --- a/src/seqfile.rs +++ b/src/seqfile.rs @@ -2,7 +2,10 @@ use std::fs::rename; use std::io; use defaults::*; +use khline::KhLine; use utils::fileutil; +use KhResult; +use errors::KhError; pub fn write_to_seqfile(lines: &str) -> io::Result<()> { let tmpfilename = get_datafile("tmpseq"); @@ -21,6 +24,14 @@ pub fn read_seqfile() -> io::Result<impl DoubleEndedIterator<Item = String>> { fileutil::read_lines_from_file(&seqfile) } +pub fn read_seqfile_khlines() -> KhResult<impl DoubleEndedIterator<Item = KhLine>> { + read_seqfile()? + .map(|line| line.parse::<KhLine>()) + .collect::<Result<Vec<KhLine>, String>>() + .map_err(KhError::from) + .map(|lines| lines.into_iter()) +} + #[cfg(test)] mod tests { use super::*; @@ -41,6 +52,15 @@ mod tests { } #[test] + fn read_seqfile_khlines_test() { + let _testdir = prepare_testdir("testdir_with_seq"); + let mut khlines = read_seqfile_khlines().unwrap(); + + let khline_expected = "1544740200 twodaysacrossbuckets.ics".parse::<KhLine>().unwrap(); + assert_eq!(khline_expected, khlines.next().unwrap()) + } + + #[test] fn write_to_seqfile_test() { let testdir = prepare_testdir("testdir"); let teststr = "Teststr äöüß\n"; |