summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Davison <dandavison7@gmail.com>2021-08-30 21:44:04 -0400
committerDan Davison <dandavison7@gmail.com>2021-08-30 21:44:04 -0400
commit34416a6681ca96fdf2b5256d58763f90b83c39db (patch)
tree7d58d486c69311a6fe939e9b3216359ff83b8911
parent8db8e908432539543341109f94a19dc2c6f4af7f (diff)
Refactor: more cleanup of main state machine loop
-rw-r--r--src/delta.rs39
1 files changed, 23 insertions, 16 deletions
diff --git a/src/delta.rs b/src/delta.rs
index 54160712..64c3a261 100644
--- a/src/delta.rs
+++ b/src/delta.rs
@@ -107,7 +107,7 @@ impl<'a> StateMachine<'a> {
self.source = detect_source(line);
}
- let mut handled_line = self.handle_commit_meta_header_line()?
+ let _ = self.handle_commit_meta_header_line()?
|| self.handle_diff_stat_line()?
|| self.handle_file_meta_diff_line()?
|| self.handle_file_meta_minus_line()?
@@ -117,21 +117,9 @@ impl<'a> StateMachine<'a> {
|| self.handle_submodule_log_line()?
|| self.handle_submodule_short_line()?
|| self.handle_hunk_line()?
- || self.handle_blame_line()?;
-
- if self.state == State::FileMeta && self.should_handle() && !self.config.color_only {
- // Skip file metadata lines unless a raw diff style has been requested.
- handled_line = true
- }
- if !handled_line {
- // Emit unchanged any line that delta does not handle.
- self.painter.emit()?;
- writeln!(
- self.painter.writer,
- "{}",
- format_raw_line(&self.raw_line, self.config)
- )?;
- }
+ || self.handle_blame_line()?
+ || self.should_skip()
+ || self.emit_line_unchanged()?;
}
self.painter.paint_buffered_minus_and_plus_lines();
@@ -160,7 +148,26 @@ impl<'a> StateMachine<'a> {
}
}
+ /// Skip file metadata lines unless a raw diff style has been requested.
+ fn should_skip(&self) -> bool {
+ self.state == State::FileMeta && self.should_handle() && !self.config.color_only
+ }
+
+ /// Emit unchanged any line that delta does not handle.
+ fn emit_line_unchanged(&mut self) -> std::io::Result<bool> {
+ self.painter.emit()?;
+ writeln!(
+ self.painter.writer,
+ "{}",
+ format_raw_line(&self.raw_line, self.config)
+ )?;
+ let handled_line = true;
+ Ok(handled_line)
+ }
+
/// Should a handle_* function be called on this element?
+ // TODO: I'm not sure the above description is accurate; I think this
+ // function needs a more accurate name.
pub fn should_handle(&self) -> bool {
let style = self.config.get_style(&self.state);
!(style.is_raw && style.decoration_style == DecorationStyle::NoDecoration)