diff options
Diffstat (limited to 'src/modules/git_branch.rs')
-rw-r--r-- | src/modules/git_branch.rs | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/src/modules/git_branch.rs b/src/modules/git_branch.rs deleted file mode 100644 index 6d07e8905..000000000 --- a/src/modules/git_branch.rs +++ /dev/null @@ -1,65 +0,0 @@ -use ansi_term::Color; -use unicode_segmentation::UnicodeSegmentation; - -use super::{Context, Module}; - -/// Creates a module with the Git branch in the current directory -/// -/// Will display the branch name if the current directory is a git repo -pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> { - const GIT_BRANCH_CHAR: &str = " "; - - let mut module = context.new_module("git_branch"); - - let segment_color = module - .config_value_style("style") - .unwrap_or_else(|| Color::Purple.bold()); - module.set_style(segment_color); - module.get_prefix().set_value("on "); - - let unsafe_truncation_length = module - .config_value_i64("truncation_length") - .unwrap_or(std::i64::MAX); - let truncation_symbol = get_graphemes( - module.config_value_str("truncation_symbol").unwrap_or("…"), - 1, - ); - - module.new_segment("symbol", GIT_BRANCH_CHAR); - - // TODO: Once error handling is implemented, warn the user if their config - // truncation length is nonsensical - let len = if unsafe_truncation_length <= 0 { - log::debug!( - "[WARN]: \"truncation_length\" should be a positive value, found {}", - unsafe_truncation_length - ); - std::usize::MAX - } else { - unsafe_truncation_length as usize - }; - let repo = context.get_repo().ok()?; - let branch_name = repo.branch.as_ref()?; - let truncated_graphemes = get_graphemes(&branch_name, len); - // The truncation symbol should only be added if we truncated - let truncated_and_symbol = if len < graphemes_len(&branch_name) { - truncated_graphemes + &truncation_symbol - } else { - truncated_graphemes - }; - - module.new_segment("name", &truncated_and_symbol); - - Some(module) -} - -fn get_graphemes(text: &str, length: usize) -> String { - UnicodeSegmentation::graphemes(text, true) - .take(length) - .collect::<Vec<&str>>() - .concat() -} - -fn graphemes_len(text: &str) -> usize { - UnicodeSegmentation::graphemes(&text[..], true).count() -} |