impl<'a> Lexer<'a> {
fn validate_post_flow_closer(&mut self, closer: char) -> Result<(), crate::error::YamlError> {
let mut saw_whitespace = false;
while let Some(c) = self.source.current() {
if c == CHAR_SPACE || c == CHAR_TAB {
saw_whitespace = true;
self.source.next();
} else {
break;
}
}
if let Some(CHAR_HASH) = self.source.current() {
if !saw_whitespace {
return Err(crate::parser::errors::comment_errors::CommentErrors::comment_must_be_preceded_by_whitespace_after_flow_closer(
self.source,
closer,
));
}
}
if let Some(c) = self.source.current() {
let is_allowed = c == CHAR_NEWLINE
|| c == CHAR_CARRIAGE_RETURN
|| c == CHAR_COMMA
|| c == CHAR_RBRACKET
|| c == CHAR_RBRACE
|| c == CHAR_HASH
|| c == CHAR_COLON;
if !is_allowed {
return Err(crate::parser::document::flow_punctuation::invalid_content_immediately_after_flow_closer(
self.source,
closer,
c,
));
}
}
Ok(())
}
}