diff options
author | Eric Huss <eric@huss.org> | 2018-11-21 09:35:50 -0800 |
---|---|---|
committer | Eric Huss <eric@huss.org> | 2018-11-21 09:35:50 -0800 |
commit | 2dc1913e0220a4113bd6a9eb165c55cda0bee590 (patch) | |
tree | 5a465664c0253556609b6bf285f1807d01e20469 | |
parent | f610ef33f4c12e363945ad3c80a1129b0389a699 (diff) | |
download | milf-rs-2dc1913e0220a4113bd6a9eb165c55cda0bee590.tar.gz milf-rs-2dc1913e0220a4113bd6a9eb165c55cda0bee590.zip |
Fix trailing space after date.
The space between date and time was being eagerly skipped when it shouldn't.
-rw-r--r-- | src/de.rs | 13 | ||||
-rw-r--r-- | test-suite/tests/datetime.rs | 2 |
2 files changed, 8 insertions, 7 deletions
@@ -1035,13 +1035,12 @@ impl<'a> Deserializer<'a> { let start = self.tokens.substr_offset(date); // Check for space separated date and time. - if let Some((_, Token::Whitespace(s))) = self.peek()? { - if s == " " { - self.next()?; - // Skip past the hour. - if let Some((_, Token::Keylike(_))) = self.peek()? { - self.next()?; - } + let mut lookahead = self.tokens.clone(); + if let Ok(Some((_, Token::Whitespace(" ")))) = lookahead.next() { + // Check if hour follows. + if let Ok(Some((_, Token::Keylike(_)))) = lookahead.next() { + self.next()?; // skip space + self.next()?; // skip keylike hour } } diff --git a/test-suite/tests/datetime.rs b/test-suite/tests/datetime.rs index f3b77e3..a0064fb 100644 --- a/test-suite/tests/datetime.rs +++ b/test-suite/tests/datetime.rs @@ -21,6 +21,8 @@ fn times() { good("1997-09-09T09:09:09-09:09"); good("1997-09-09T09:09:09"); good("1997-09-09"); + dogood("1997-09-09 ", "1997-09-09"); + dogood("1997-09-09 # comment", "1997-09-09"); good("09:09:09"); good("1997-09-09T09:09:09.09Z"); good("1997-09-09T09:09:09.09+09:09"); |