Fix trailing space after date.

The space between date and time was being eagerly skipped when it shouldn't.
This commit is contained in:
Eric Huss 2018-11-21 09:35:50 -08:00
parent 80d2cf081d
commit b21dd8cf05
2 changed files with 8 additions and 7 deletions

View file

@ -1035,13 +1035,12 @@ impl<'a> Deserializer<'a> {
let start = self.tokens.substr_offset(date); let start = self.tokens.substr_offset(date);
// Check for space separated date and time. // Check for space separated date and time.
if let Some((_, Token::Whitespace(s))) = self.peek()? { let mut lookahead = self.tokens.clone();
if s == " " { if let Ok(Some((_, Token::Whitespace(" ")))) = lookahead.next() {
self.next()?; // Check if hour follows.
// Skip past the hour. if let Ok(Some((_, Token::Keylike(_)))) = lookahead.next() {
if let Some((_, Token::Keylike(_))) = self.peek()? { self.next()?; // skip space
self.next()?; self.next()?; // skip keylike hour
}
} }
} }

View file

@ -21,6 +21,8 @@ fn times() {
good("1997-09-09T09:09:09-09:09"); good("1997-09-09T09:09:09-09:09");
good("1997-09-09T09:09:09"); good("1997-09-09T09:09:09");
good("1997-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("09:09:09");
good("1997-09-09T09:09:09.09Z"); good("1997-09-09T09:09:09.09Z");
good("1997-09-09T09:09:09.09+09:09"); good("1997-09-09T09:09:09.09+09:09");