diff options
author | Dan Davison <dandavison7@gmail.com> | 2021-11-29 10:00:19 -0500 |
---|---|---|
committer | Dan Davison <dandavison7@gmail.com> | 2021-11-29 20:08:24 -0500 |
commit | b121d60c6eba06b6cd7de9add9ed938519853120 (patch) | |
tree | da88f69cc7af30691aad81a11bc726536908a10d /src | |
parent | d0d1f09d249797f1c767367758fdce39675a3773 (diff) |
Rename: FileMeta => DiffHeader
Diffstat (limited to 'src')
-rw-r--r-- | src/config.rs | 2 | ||||
-rw-r--r-- | src/delta.rs | 32 | ||||
-rw-r--r-- | src/handlers/diff_header.rs (renamed from src/handlers/file_meta.rs) | 118 | ||||
-rw-r--r-- | src/handlers/diff_header_diff.rs (renamed from src/handlers/file_meta_diff.rs) | 10 | ||||
-rw-r--r-- | src/handlers/diff_header_misc.rs (renamed from src/handlers/file_meta_misc.rs) | 8 | ||||
-rw-r--r-- | src/handlers/grep.rs | 2 | ||||
-rw-r--r-- | src/handlers/mod.rs | 8 | ||||
-rw-r--r-- | src/paint.rs | 2 | ||||
-rw-r--r-- | src/tests/test_example_diffs.rs | 2 |
9 files changed, 91 insertions, 93 deletions
diff --git a/src/config.rs b/src/config.rs index 5e5dad41..af9ade09 100644 --- a/src/config.rs +++ b/src/config.rs @@ -148,7 +148,7 @@ impl Config { State::HunkMinus(_) => &self.minus_style, State::HunkPlus(_) => &self.plus_style, State::CommitMeta => &self.commit_style, - State::FileMeta => &self.file_style, + State::DiffHeader => &self.file_style, State::HunkHeader(_, _) => &self.hunk_header_style, State::SubmoduleLog => &self.file_style, _ => delta_unreachable("Unreachable code reached in get_style."), diff --git a/src/delta.rs b/src/delta.rs index e6c05fba..c2e48ba0 100644 --- a/src/delta.rs +++ b/src/delta.rs @@ -15,16 +15,16 @@ use crate::style::DecorationStyle; #[derive(Clone, Debug, PartialEq)] pub enum State { CommitMeta, // In commit metadata section - FileMeta, // In diff metadata section, between (possible) commit metadata and first hunk + DiffHeader, // In diff header section, between (possible) commit metadata and first hunk HunkHeader(String, String), // In hunk metadata line (line, raw_line) - HunkZero, // In hunk; unchanged line + HunkZero, // In hunk; unchanged line HunkMinus(Option<String>), // In hunk; removed line (raw_line) HunkPlus(Option<String>), // In hunk; added line (raw_line) SubmoduleLog, // In a submodule section, with gitconfig diff.submodule = log SubmoduleShort(String), // In a submodule section, with gitconfig diff.submodule = short Blame(String, Option<String>), // In a line of `git blame` output (commit, repeat_blame_line). GitShowFile, // In a line of `git show $revision:./path/to/file.ext` output - Grep, // In a line of `git grep` output + Grep, // In a line of `git grep` output Unknown, // The following elements are created when a line is wrapped to display it: HunkZeroWrapped, // Wrapped unchanged line @@ -42,10 +42,10 @@ pub enum Source { // Possible transitions, with actions on entry: // // -// | from \ to | CommitMeta | FileMeta | HunkHeader | HunkZero | HunkMinus | HunkPlus | +// | from \ to | CommitMeta | DiffHeader | HunkHeader | HunkZero | HunkMinus | HunkPlus | // |-------------+-------------+-------------+-------------+-------------+-------------+----------| // | CommitMeta | emit | emit | | | | | -// | FileMeta | | emit | emit | | | | +// | DiffHeader | | emit | emit | | | | // | HunkHeader | | | | emit | push | push | // | HunkZero | emit | emit | emit | emit | push | push | // | HunkMinus | flush, emit | flush, emit | flush, emit | flush, emit | push | push | @@ -58,8 +58,8 @@ pub struct StateMachine<'a> { pub source: Source, pub minus_file: String, pub plus_file: String, - pub minus_file_event: handlers::file_meta::FileEvent, - pub plus_file_event: handlers::file_meta::FileEvent, + pub minus_file_event: handlers::diff_header::FileEvent, + pub plus_file_event: handlers::diff_header::FileEvent, pub diff_line: String, pub painter: Painter<'a>, pub config: &'a Config, @@ -70,7 +70,7 @@ pub struct StateMachine<'a> { // a file is renamed with changes, both are present, and we rely on the following variables to // avoid emitting the file meta header line twice (#245). pub current_file_pair: Option<(String, String)>, - pub handled_file_meta_header_line_file_pair: Option<(String, String)>, + pub handled_diff_header_header_line_file_pair: Option<(String, String)>, pub blame_commit_colors: HashMap<String, String>, } @@ -90,11 +90,11 @@ impl<'a> StateMachine<'a> { source: Source::Unknown, minus_file: "".to_string(), plus_file: "".to_string(), - minus_file_event: handlers::file_meta::FileEvent::NoEvent, - plus_file_event: handlers::file_meta::FileEvent::NoEvent, + minus_file_event: handlers::diff_header::FileEvent::NoEvent, + plus_file_event: handlers::diff_header::FileEvent::NoEvent, diff_line: "".to_string(), current_file_pair: None, - handled_file_meta_header_line_file_pair: None, + handled_diff_header_header_line_file_pair: None, painter: Painter::new(writer, config), config, blame_commit_colors: HashMap::new(), @@ -118,11 +118,11 @@ impl<'a> StateMachine<'a> { // handle it). let _ = self.handle_commit_meta_header_line()? || self.handle_diff_stat_line()? - || self.handle_file_meta_diff_line()? - || self.handle_file_meta_minus_line()? - || self.handle_file_meta_plus_line()? + || self.handle_diff_header_diff_line()? + || self.handle_diff_header_minus_line()? + || self.handle_diff_header_plus_line()? || self.handle_hunk_header_line()? - || self.handle_file_meta_misc_line()? + || self.handle_diff_header_misc_line()? || self.handle_submodule_log_line()? || self.handle_submodule_short_line()? || self.handle_hunk_line()? @@ -171,7 +171,7 @@ impl<'a> StateMachine<'a> { /// Skip file metadata lines unless a raw diff style has been requested. fn should_skip_line(&self) -> bool { - self.state == State::FileMeta && self.should_handle() && !self.config.color_only + self.state == State::DiffHeader && self.should_handle() && !self.config.color_only } /// Emit unchanged any line that delta does not handle. diff --git a/src/handlers/file_meta.rs b/src/handlers/diff_header.rs index bea05625..e2888797 100644 --- a/src/handlers/file_meta.rs +++ b/src/handlers/diff_header.rs @@ -23,21 +23,21 @@ pub enum FileEvent { impl<'a> StateMachine<'a> { #[inline] - fn test_file_meta_minus_line(&self) -> bool { - (self.state == State::FileMeta || self.source == Source::DiffUnified) + fn test_diff_header_minus_line(&self) -> bool { + (self.state == State::DiffHeader || self.source == Source::DiffUnified) && (self.line.starts_with("--- ") || self.line.starts_with("rename from ") || self.line.starts_with("copy from ") || self.line.starts_with("old mode ")) } - pub fn handle_file_meta_minus_line(&mut self) -> std::io::Result<bool> { - if !self.test_file_meta_minus_line() { + pub fn handle_diff_header_minus_line(&mut self) -> std::io::Result<bool> { + if !self.test_diff_header_minus_line() { return Ok(false); } let mut handled_line = false; - let (path_or_mode, file_event) = parse_file_meta_line( + let (path_or_mode, file_event) = parse_diff_header_line( &self.line, self.source == Source::GitDiff, if self.config.relative_paths { @@ -57,22 +57,22 @@ impl<'a> StateMachine<'a> { self.minus_file_event = file_event; if self.source == Source::DiffUnified { - self.state = State::FileMeta; + self.state = State::DiffHeader; self.painter .set_syntax(get_file_extension_from_marker_line(&self.line)); } else { self.painter - .set_syntax(get_file_extension_from_file_meta_line_file_path( + .set_syntax(get_file_extension_from_diff_header_line_file_path( &self.minus_file, )); } // In color_only mode, raw_line's structure shouldn't be changed. - // So it needs to avoid fn _handle_file_meta_header_line + // So it needs to avoid fn _handle_diff_header_header_line // (it connects the plus_file and minus_file), - // and to call fn handle_generic_file_meta_header_line directly. + // and to call fn handle_generic_diff_header_header_line directly. if self.config.color_only { - write_generic_file_meta_header_line( + write_generic_diff_header_header_line( &self.line, &self.raw_line, &mut self.painter, @@ -84,20 +84,20 @@ impl<'a> StateMachine<'a> { } #[inline] - fn test_file_meta_plus_line(&self) -> bool { - (self.state == State::FileMeta || self.source == Source::DiffUnified) + fn test_diff_header_plus_line(&self) -> bool { + (self.state == State::DiffHeader || self.source == Source::DiffUnified) && (self.line.starts_with("+++ ") || self.line.starts_with("rename to ") || self.line.starts_with("copy to ") || self.line.starts_with("new mode ")) } - pub fn handle_file_meta_plus_line(&mut self) -> std::io::Result<bool> { - if !self.test_file_meta_plus_line() { + pub fn handle_diff_header_plus_line(&mut self) -> std::io::Result<bool> { + if !self.test_diff_header_plus_line() { return Ok(false); } let mut handled_line = false; - let (path_or_mode, file_event) = parse_file_meta_line( + let (path_or_mode, file_event) = parse_diff_header_line( &self.line, self.source == Source::GitDiff, if self.config.relative_paths { @@ -116,17 +116,17 @@ impl<'a> StateMachine<'a> { }; self.plus_file_event = file_event; self.painter - .set_syntax(get_file_extension_from_file_meta_line_file_path( + .set_syntax(get_file_extension_from_diff_header_line_file_path( &self.plus_file, )); self.current_file_pair = Some((self.minus_file.clone(), self.plus_file.clone())); // In color_only mode, raw_line's structure shouldn't be changed. - // So it needs to avoid fn _handle_file_meta_header_line + // So it needs to avoid fn _handle_diff_header_header_line // (it connects the plus_file and minus_file), - // and to call fn handle_generic_file_meta_header_line directly. + // and to call fn handle_generic_diff_header_header_line directly. if self.config.color_only { - write_generic_file_meta_header_line( + write_generic_diff_header_header_line( &self.line, &self.raw_line, &mut self.painter, @@ -134,17 +134,17 @@ impl<'a> StateMachine<'a> { )?; handled_line = true } else if self.should_handle() - && self.handled_file_meta_header_line_file_pair != self.current_file_pair + && self.handled_diff_header_header_line_file_pair != self.current_file_pair { self.painter.emit()?; - self._handle_file_meta_header_line(self.source == Source::DiffUnified)?; - self.handled_file_meta_header_line_file_pair = self.current_file_pair.clone() + self._handle_diff_header_header_line(self.source == Source::DiffUnified)?; + self.handled_diff_header_header_line_file_pair = self.current_file_pair.clone() } Ok(handled_line) } - /// Construct file change line from minus and plus file and write with FileMeta styling. - fn _handle_file_meta_header_line(&mut self, comparing: bool) -> std::io::Result<()> { + /// Construct file change line from minus and plus file and write with DiffHeader styling. + fn _handle_diff_header_header_line(&mut self, comparing: bool) -> std::io::Result<()> { let line = get_file_change_description_from_file_paths( &self.minus_file, &self.plus_file, @@ -154,12 +154,12 @@ impl<'a> StateMachine<'a> { self.config, ); // FIXME: no support for 'raw' - write_generic_file_meta_header_line(&line, &line, &mut self.painter, self.config) + write_generic_diff_header_header_line(&line, &line, &mut self.painter, self.config) } } -/// Write `line` with FileMeta styling. -pub fn write_generic_file_meta_header_line( +/// Write `line` with DiffHeader styling. +pub fn write_generic_diff_header_header_line( line: &str, raw_line: &str, painter: &mut Painter, @@ -173,10 +173,8 @@ pub fn write_generic_file_meta_header_line( } let (mut draw_fn, pad, decoration_ansi_term_style) = draw::get_draw_function(config.file_style.decoration_style); - // Prints the new line below file-meta-line. - // However in the case of color_only mode, - // we won't print it because we can't change raw_line structure. if !config.color_only { + // Maintain 1-1 correspondence between input and output lines. writeln!(painter.writer)?; } draw_fn( @@ -201,7 +199,7 @@ fn get_file_extension_from_marker_line(line: &str) -> Option<&str> { .and_then(|file| file.split('.').last()) } -fn get_file_extension_from_file_meta_line_file_path(path: &str) -> Option<&str> { +fn get_file_extension_from_diff_header_line_file_path(path: &str) -> Option<&str> { if path.is_empty() || path == "/dev/null" { None } else { @@ -218,7 +216,7 @@ pub fn get_extension(s: &str) -> Option<&str> { .or_else(|| path.file_name().and_then(|s| s.to_str())) } -fn parse_file_meta_line( +fn parse_diff_header_line( line: &str, git_diff_name: bool, relative_path_base: Option<&str>, @@ -390,41 +388,41 @@ mod tests { } #[test] - fn test_get_file_extension_from_file_meta_line() { + fn test_get_file_extension_from_diff_header_line() { assert_eq!( - get_file_extension_from_file_meta_line_file_path("a/src/parse.rs"), + get_file_extension_from_diff_header_line_file_path("a/src/parse.rs"), Some("rs") ); assert_eq!( - get_file_extension_from_file_meta_line_file_path("b/src/pa rse.rs"), + get_file_extension_from_diff_header_line_file_path("b/src/pa rse.rs"), Some("rs") ); assert_eq!( - get_file_extension_from_file_meta_line_file_path("src/pa rse.rs"), + get_file_extension_from_diff_header_line_file_path("src/pa rse.rs"), Some("rs") ); assert_eq!( - get_file_extension_from_file_meta_line_file_path("wat hello.rs"), + get_file_extension_from_diff_header_line_file_path("wat hello.rs"), Some("rs") ); assert_eq!( - get_file_extension_from_file_meta_line_file_path("/dev/null"), + get_file_extension_from_diff_header_line_file_path("/dev/null"), None ); assert_eq!( - get_file_extension_from_file_meta_line_file_path("Dockerfile"), + get_file_extension_from_diff_header_line_file_path("Dockerfile"), Some("Dockerfile") ); assert_eq!( - get_file_extension_from_file_meta_line_file_path("Makefile"), + get_file_extension_from_diff_header_line_file_path("Makefile"), Some("Makefile") ); assert_eq!( - get_file_extension_from_file_meta_line_file_path("a/src/Makefile"), + get_file_extension_from_diff_header_line_file_path("a/src/Makefile"), Some("Makefile") ); assert_eq!( - get_file_extension_from_file_meta_line_file_path("src/Makefile"), + get_file_extension_from_diff_header_line_file_path("src/Makefile"), Some("Makefile") ); } @@ -444,47 +442,47 @@ mod tests { // // but we don't attempt that currently. #[test] - fn test_get_file_path_from_git_file_meta_line() { + fn test_get_file_path_from_git_diff_header_line() { assert_eq!( - parse_file_meta_line("--- /dev/null", true, None), + parse_diff_header_line("--- /dev/null", true, None), ("/dev/null".to_string(), FileEvent::Change) ); for prefix in &DIFF_PREFIXES { assert_eq!( - parse_file_meta_line(&format!("--- {}src/delta.rs", prefix), true, None), + parse_diff_header_line(&format!("--- {}src/delta.rs", prefix), true, None), ("src/delta.rs".to_string(), FileEvent::Change) ); } assert_eq!( - parse_file_meta_line("--- src/delta.rs", true, None), + parse_diff_header_line("--- src/delta.rs", true, None), ("src/delta.rs".to_string(), FileEvent::Change) ); assert_eq!( - parse_file_meta_line("+++ src/delta.rs", true, None), + parse_diff_header_line("+++ src/delta.rs", true, None), ("src/delta.rs".to_string(), FileEvent::Change) ); } #[test] - fn test_get_file_path_from_git_file_meta_line_containing_spaces() { + fn test_get_file_path_from_git_diff_header_line_containing_spaces() { assert_eq!( - parse_file_meta_line("+++ a/my src/delta.rs", true, None), + parse_diff_header_line("+++ a/my src/delta.rs", true, None), ("my src/delta.rs".to_string(), FileEvent::Change) ); assert_eq!( - parse_file_meta_line("+++ my src/delta.rs", true, None), + parse_diff_header_line("+++ my src/delta.rs", true, None), ("my src/delta.rs".to_string(), FileEvent::Change) ); assert_eq!( - parse_file_meta_line("+++ a/src/my delta.rs", true, None), + parse_diff_header_line("+++ a/src/my delta.rs", true, None), ("src/my delta.rs".to_string(), FileEvent::Change) ); assert_eq!( - parse_file_meta_line("+++ a/my src/my delta.rs", true, None), + parse_diff_header_line("+++ a/my src/my delta.rs", true, None), ("my src/my delta.rs".to_string(), FileEvent::Change) ); assert_eq!( - parse_file_meta_line("+++ b/my src/my enough/my delta.rs", true, None), + parse_diff_header_line("+++ b/my src/my enough/my delta.rs", true, None), ( "my src/my enough/my delta.rs".to_string(), FileEvent::Change @@ -493,29 +491,29 @@ mod tests { } #[test] - fn test_get_file_path_from_git_file_meta_line_rename() { + fn test_get_file_path_from_git_diff_header_line_rename() { assert_eq!( - parse_file_meta_line("rename from nospace/file2.el", true, None), + parse_diff_header_line("rename from nospace/file2.el", true, None), ("nospace/file2.el".to_string(), FileEvent::Rename) ); } #[test] - fn test_get_file_path_from_git_file_meta_line_rename_containing_spaces() { + fn test_get_file_path_from_git_diff_header_line_rename_containing_spaces() { assert_eq!( - parse_file_meta_line("rename from with space/file1.el", true, None), + parse_diff_header_line("rename from with space/file1.el", true, None), ("with space/file1.el".to_string(), FileEvent::Rename) ); } #[test] - fn test_parse_file_meta_line() { + fn test_parse_diff_header_line() { assert_eq!( - parse_file_meta_line("--- src/delta.rs", false, None), + parse_diff_header_line("--- src/delta.rs", false, None), ("src/delta.rs".to_string(), FileEvent::Change) ); assert_eq!( - parse_file_meta_line("+++ src/delta.rs", false, None), + parse_diff_header_line("+++ src/delta.rs", false, None), ("src/delta.rs".to_string(), FileEvent::Change) ); } diff --git a/src/handlers/file_meta_diff.rs b/src/handlers/diff_header_diff.rs index d1d8d13a..161f666b 100644 --- a/src/handlers/file_meta_diff.rs +++ b/src/handlers/diff_header_diff.rs @@ -2,18 +2,18 @@ use crate::delta::{State, StateMachine}; impl<'a> StateMachine<'a> { #[inline] - fn test_file_meta_diff_line(&self) -> bool { + fn test_diff_header_diff_line(&self) -> bool { self.line.starts_with("diff ") } #[allow(clippy::unnecessary_wraps)] - pub fn handle_file_meta_diff_line(&mut self) -> std::io::Result<bool> { - if !self.test_file_meta_diff_line() { + pub fn handle_diff_header_diff_line(&mut self) -> std::io::Result<bool> { + if !self.test_diff_header_diff_line() { return Ok(false); } self.painter.paint_buffered_minus_and_plus_lines(); - self.state = State::FileMeta; - self.handled_file_meta_header_line_file_pair = None; + self.state = State::DiffHeader; + self.handled_diff_header_header_line_file_pair = None; self.diff_line = self.line.clone(); Ok(false) } diff --git a/src/handlers/file_meta_misc.rs b/src/handlers/diff_header_misc.rs index d6de2610..f112d46b 100644 --- a/src/handlers/file_meta_misc.rs +++ b/src/handlers/diff_header_misc.rs @@ -2,15 +2,15 @@ use crate::delta::{Source, State, StateMachine}; impl<'a> StateMachine<'a> { #[inline] - fn test_file_meta_misc_cases(&self) -> bool { + fn test_diff_header_misc_cases(&self) -> bool { self.source == Source::DiffUnified && self.line.starts_with("Only in ") || self.line.starts_with("Binary files ") } - pub fn handle_file_meta_misc_line(&mut self) -> std::io::Result<bool> { - if !self.test_file_meta_misc_cases() { + pub fn handle_diff_header_misc_line(&mut self) -> std::io::Result<bool> { + if !self.test_diff_header_misc_cases() { return Ok(false); } - self.handle_additional_cases(State::FileMeta) + self.handle_additional_cases(State::DiffHeader) } } diff --git a/src/handlers/grep.rs b/src/handlers/grep.rs index e5c004ff..4a76bf62 100644 --- a/src/handlers/grep.rs +++ b/src/handlers/grep.rs @@ -57,7 +57,7 @@ impl<'a> StateMachine<'a> { // Emit syntax-highlighted code // TODO: Determine the language less frequently, e.g. only when the file changes. - if let Some(lang) = handlers::file_meta::get_extension(&grep_line.path) + if let Some(lang) = handlers::diff_header::get_extension(&grep_line.path) .or_else(|| self.config.default_language.as_deref()) { self.painter.set_syntax(Some(lang)); diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs index c032a7b9..4747bbcc 100644 --- a/src/handlers/mod.rs +++ b/src/handlers/mod.rs @@ -2,11 +2,11 @@ /// main `StateMachine::consume()` loop. pub mod blame; pub mod commit_meta; +pub mod diff_header; +pub mod diff_header_diff; +pub mod diff_header_misc; pub mod diff_stat; pub mod draw; -pub mod file_meta; -pub mod file_meta_diff; -pub mod file_meta_misc; pub mod git_show_file; pub mod grep; pub mod hunk; @@ -37,7 +37,7 @@ impl<'a> StateMachine<'a> { self.state = to_state; if self.should_handle() { self.painter.emit()?; - file_meta::write_generic_file_meta_header_line( + diff_header::write_generic_diff_header_header_line( &self.line, &self.raw_line, &mut self.painter, diff --git a/src/paint.rs b/src/paint.rs index 89593bda..d47c7689 100644 --- a/src/paint.rs +++ b/src/paint.rs @@ -568,7 +568,7 @@ impl<'p> Painter<'p> { State::Grep => true, State::Unknown | State::CommitMeta - | State::FileMeta + | State::DiffHeader | State::HunkMinusWrapped | State::HunkZeroWrapped | State::HunkPlusWrapped diff --git a/src/tests/test_example_diffs.rs b/src/tests/test_example_diffs.rs index faecd2a1..6e2a94ec 100644 --- a/src/tests/test_example_diffs.rs +++ b/src/tests/test_example_diffs.rs @@ -138,7 +138,7 @@ mod tests { assert_eq!(lines.nth(7).unwrap(), "This is different from b"); // File uniqueness assert_eq!(lines.nth(2).unwrap(), "Only in a/: just_a"); - // FileMeta divider + // DiffHeader divider assert!(lines.next().unwrap().starts_with("───────")); // Next hunk assert_eq!( |