summaryrefslogtreecommitdiffstats
path: root/src/parse.rs
diff options
context:
space:
mode:
authorDan Davison <dandavison7@gmail.com>2020-07-18 15:34:43 -0400
committerDan Davison <dandavison7@gmail.com>2020-07-22 17:57:57 -0400
commitb2257cfae7eacc73e47299d90d9a8d479b3e362c (patch)
tree56b60ad41ce689042ce64c4793eec35100d8c322 /src/parse.rs
parent29bf022218f72157e1921412ae6ede598733b6fb (diff)
Format files and commits as OSC 8 hyperlinks
Closes #257
Diffstat (limited to 'src/parse.rs')
-rw-r--r--src/parse.rs31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/parse.rs b/src/parse.rs
index 6899345b..1e221b45 100644
--- a/src/parse.rs
+++ b/src/parse.rs
@@ -1,8 +1,10 @@
use lazy_static::lazy_static;
use regex::Regex;
+use std::borrow::Cow;
use std::path::Path;
use crate::config::Config;
+use crate::features;
// https://git-scm.com/docs/git-config#Documentation/git-config.txt-diffmnemonicPrefix
const DIFF_PREFIXES: [&str; 6] = ["a/", "b/", "c/", "i/", "o/", "w/"];
@@ -67,23 +69,34 @@ pub fn get_file_change_description_from_file_paths(
"".to_string()
}
};
+ let format_file = |file| {
+ if config.hyperlinks {
+ features::hyperlinks::format_osc8_file_hyperlink(file, None, file, config)
+ } else {
+ Cow::from(file)
+ }
+ };
match (minus_file, plus_file) {
(minus_file, plus_file) if minus_file == plus_file => format!(
"{}{}",
format_label(&config.file_modified_label),
- minus_file
+ format_file(minus_file)
+ ),
+ (minus_file, "/dev/null") => format!(
+ "{}{}",
+ format_label(&config.file_removed_label),
+ format_file(minus_file)
+ ),
+ ("/dev/null", plus_file) => format!(
+ "{}{}",
+ format_label(&config.file_added_label),
+ format_file(plus_file)
),
- (minus_file, "/dev/null") => {
- format!("{}{}", format_label(&config.file_removed_label), minus_file)
- }
- ("/dev/null", plus_file) => {
- format!("{}{}", format_label(&config.file_added_label), plus_file)
- }
(minus_file, plus_file) => format!(
"{}{} ⟶ {}",
format_label(&config.file_renamed_label),
- minus_file,
- plus_file
+ format_file(minus_file),
+ format_file(plus_file)
),
}
}