on master help sign in
Use a more streamlined version of style-component collection
commitdccf8d82212e24e9015e4346a3d7f9330051a6ff authorsharkdp <davidpeter@web.de> dateWed 12 Sep 2018, 21:35 (8 years ago) parent7897260
3 files changed+16−17
src/app.rs+14−15 src/assets.rs−1 src/style.rs+2−1
src/app.rs+14−15
@@ -12,7 +12,7 @@ use console::Term;
1212#[cfg(windows)]
1313use ansi_term;
1414
15−use assets::{BAT_STYLE_DEFAULT, BAT_THEME_DEFAULT};
15+use assets::BAT_THEME_DEFAULT;
1616use errors::*;
1717use line_range::LineRange;
1818use style::{OutputComponent, OutputComponents, OutputWrap};
@@ -430,26 +430,25 @@ impl App {
430430 [OutputComponent::Numbers].iter().cloned().collect()
431431 } else if matches.is_present("plain") {
432432 [OutputComponent::Plain].iter().cloned().collect()
433− } else if matches.is_present("style") {
434− values_t!(matches.values_of("style"), OutputComponent)?
433+ } else {
434+ let env_style_components: Option<Vec<OutputComponent>> =
435+ transpose(env::var("BAT_STYLE").ok().map(|style_str| {
436+ style_str
437+ .split(",")
438+ .map(|x| OutputComponent::from_str(&x))
439+ .collect::<Result<Vec<OutputComponent>>>()
440+ }))?;
441+
442+ values_t!(matches.values_of("style"), OutputComponent)
443+ .ok()
444+ .or(env_style_components)
445+ .unwrap_or(vec![OutputComponent::Full])
435446 .into_iter()
436447 .map(|style| style.components(self.interactive_output))
437448 .fold(HashSet::new(), |mut acc, components| {
438449 acc.extend(components.iter().cloned());
439450 acc
440451 })
441− } else {
442− let style_str = env::var("BAT_STYLE").unwrap_or(String::from(BAT_STYLE_DEFAULT));
443− style_str
444− .split(",")
445− .map(|x| OutputComponent::from_str(&x))
446− .map(|s| match s {
447− Ok(style) => style.components(self.interactive_output),
448− Err(_) => &[],
449− }).fold(HashSet::new(), |mut acc, components| {
450− acc.extend(components.iter().cloned());
451− acc
452− })
453452 },
454453 ))
455454 }
src/assets.rs−1
@@ -18,7 +18,6 @@ lazy_static! {
1818 ProjectDirs::from("", "", crate_name!()).expect("Could not get home directory");
1919}
2020
21−pub const BAT_STYLE_DEFAULT: &str = "auto";
2221pub const BAT_THEME_DEFAULT: &str = "Monokai Extended";
2322
2423pub struct HighlightingAssets {
src/style.rs+2−1
@@ -54,7 +54,8 @@ impl FromStr for OutputComponent {
5454 "header" => Ok(OutputComponent::Header),
5555 "numbers" => Ok(OutputComponent::Numbers),
5656 "full" => Ok(OutputComponent::Full),
57− "plain" | _ => Ok(OutputComponent::Plain),
57+ "plain" => Ok(OutputComponent::Plain),
58+ _ => Err(format!("Unknown style '{}'", s).into()),
5859 }
5960 }
6061}