diff --git a/src/gitu_diff.rs b/src/gitu_diff.rs index 1f1d41eea7..f29b69b6e0 100644 --- a/src/gitu_diff.rs +++ b/src/gitu_diff.rs @@ -354,11 +354,11 @@ impl<'a> Parser<'a> { } if self.consume("--- ").is_ok() { - old_file = self.diff_header_path(Self::newline_or_eof)?; - self.newline_or_eof()?; + old_file = self.diff_header_path(Self::newline_or_tab_or_eof)?; + self.consume_until_after(Self::newline_or_eof)?; self.consume("+++ ")?; - new_file = self.diff_header_path(Self::newline_or_eof)?; - self.newline_or_eof()?; + new_file = self.diff_header_path(Self::newline_or_tab_or_eof)?; + self.consume_until_after(Self::newline_or_eof)?; } Ok(DiffHeader { @@ -665,6 +665,18 @@ impl<'a> Parser<'a> { }) } + fn newline_or_tab_or_eof(&mut self) -> ThinResult> { + log::trace!("Parser::newline_or_tab_or_eof\n{:?}", self); + self.newline() + .or_else(|_| self.tab()) + .or_else(|_| self.eof()) + .map_err(|_| { + array_vec![ThinParseError { + expected: "", + }] + }) + } + fn newline(&mut self) -> ThinResult> { log::trace!("Parser::newline\n{:?}", self); self.consume("\r\n") @@ -676,6 +688,12 @@ impl<'a> Parser<'a> { }) } + fn tab(&mut self) -> ThinResult> { + log::trace!("Parser::tab\n{:?}", self); + self.consume("\t") + .map_err(|_| array_vec![ThinParseError { expected: "" }]) + } + fn ascii_whitespace(&mut self) -> ThinResult> { log::trace!("Parser::ascii_whitespace\n{:?}", self); self.consume(" ")