summaryrefslogtreecommitdiffstats
path: root/src/seqfile.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/seqfile.rs')
-rw-r--r--src/seqfile.rs20
1 files changed, 20 insertions, 0 deletions
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";