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);
// 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
}
}

View file

@ -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");