diff --git a/benches/benchmarks.rs b/benches/benchmarks.rs index e72d9b09..beb7eede 100644 --- a/benches/benchmarks.rs +++ b/benches/benchmarks.rs @@ -4,13 +4,13 @@ extern crate test; #[cfg(test)] mod tests { + use clap::{App, Arg}; use starship::{modules, print}; use test::Bencher; - use clap::{App, Arg}; #[bench] fn full_prompt_bench(b: &mut Bencher) { - b.iter(||{ + b.iter(|| { let args = App::new("starship") .arg(Arg::with_name("status_code")) .get_matches_from(vec!["starship", "0"]); @@ -25,7 +25,7 @@ mod tests { let args = App::new("starship") .arg(Arg::with_name("status_code")) .get_matches_from(vec!["starship", "0"]); - + let segment = modules::handle("char", &args); print::stringify_segment(segment) }); @@ -37,7 +37,7 @@ mod tests { let args = App::new("starship") .arg(Arg::with_name("status_code")) .get_matches_from(vec!["starship", "0"]); - + let segment = modules::handle("dir", &args); print::stringify_segment(segment) }); diff --git a/src/modules/char.rs b/src/modules/character.rs similarity index 99% rename from src/modules/char.rs rename to src/modules/character.rs index af24ef08..75d15ddc 100644 --- a/src/modules/char.rs +++ b/src/modules/character.rs @@ -3,7 +3,7 @@ use ansi_term::{Color, Style}; use clap::ArgMatches; /// Creates a segment for the prompt character -/// +/// /// The char segment prints an arrow character in a color dependant on the exit- /// code of the last executed command: /// - If the exit-code was "0", the arrow will be formatted with `COLOR_SUCCESS` diff --git a/src/modules/directory.rs b/src/modules/directory.rs index 098d0f14..3e4546e0 100644 --- a/src/modules/directory.rs +++ b/src/modules/directory.rs @@ -1,8 +1,8 @@ use super::Segment; -use dirs; -use std::env; use ansi_term::{Color, Style}; use clap::ArgMatches; +use dirs; +use std::env; /// Creates a segment with the current directory pub fn segment(_: &ArgMatches) -> Segment { diff --git a/src/modules/mod.rs b/src/modules/mod.rs index 61447890..87ce82e2 100644 --- a/src/modules/mod.rs +++ b/src/modules/mod.rs @@ -1,9 +1,9 @@ -mod char; +mod character; mod directory; mod line_break; -use clap::ArgMatches; use ansi_term::Style; +use clap::ArgMatches; pub struct Segment { pub style: Style, @@ -18,21 +18,21 @@ impl Default for Segment { style: Style::default(), value: String::from(" "), prefix: None, - suffix: None + suffix: None, })); Segment { style: Style::default(), value: String::from(""), prefix: None, - suffix: default_suffix + suffix: default_suffix, } } } pub fn handle(module: &str, args: &ArgMatches) -> Segment { match module { - "char" | "character" => char::segment(&args), + "char" | "character" => character::segment(&args), "dir" | "directory" => directory::segment(&args), "line_break" => line_break::segment(&args), diff --git a/src/print.rs b/src/print.rs index b4ce7ab7..2aad9019 100644 --- a/src/print.rs +++ b/src/print.rs @@ -5,26 +5,44 @@ use clap::ArgMatches; pub fn prompt(args: ArgMatches) { let default_prompt = vec!["directory", "line_break", "character"]; - default_prompt.into_iter() + default_prompt + .into_iter() .map(|module| modules::handle(module, &args)) .map(|segment| stringify_segment(segment)) .for_each(|segment_string| print!("{}", segment_string)); } +/// Create a string with the formatted contents of a segment +/// +/// Will recursively also format the prefix and suffix of the segment being +/// stringified. +/// +/// # Example +/// ``` +/// use starship::modules::Segment; +/// +/// let segment = Segment { +/// value: String::from("->"), +/// ..Default::default() +/// }; +/// +/// let result = starship::print::stringify_segment(segment); +/// assert_eq!(result, "-> "); +/// ``` pub fn stringify_segment(segment: Segment) -> String { let Segment { prefix, value, style, suffix, - } = segment; + } = segment; let mut segment_string = String::new(); if let Some(prefix) = prefix { segment_string += &stringify_segment(*prefix); } - + segment_string += &style.paint(value).to_string(); if let Some(suffix) = suffix {