X-Git-Url: http://git.scottworley.com/tablify/blobdiff_plain/201b9ef3e07ed5948730079475f79703b0cd28f8..1f6bd845277daaea2513cc3dc19a0907fe9f6d6c:/src/lib.rs?ds=inline diff --git a/src/lib.rs b/src/lib.rs index b583c3e..72a3add 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -23,7 +23,11 @@ impl>> Iterator for Reader type Item = Result; fn next(&mut self) -> Option { loop { - match self.input.next() { + match self + .input + .next() + .map(|r| r.map(|line| String::from(line.trim_end()))) + { None => return Ok(std::mem::take(&mut self.row)).transpose(), Some(Err(e)) => return Some(Err(e)), Some(Ok(line)) if line.is_empty() && self.row.is_some() => { @@ -122,6 +126,30 @@ mod tests { } ] ); + assert_eq!( + read_rows(&b"foo\n \nbar\n"[..]) + .flatten() + .collect::>(), + vec![ + RowInput { + label: String::from("foo"), + entries: vec![] + }, + RowInput { + label: String::from("bar"), + entries: vec![] + } + ] + ); + assert_eq!( + read_rows(&b"foo \n bar \n"[..]) + .flatten() + .collect::>(), + vec![RowInput { + label: String::from("foo"), + entries: vec![String::from("bar")] + }] + ); let bad = read_rows(&b" foo"[..]).next().unwrap(); assert!(bad.is_err());