summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsharkdp <davidpeter@web.de>2020-03-21 20:54:16 +0100
committerDavid Peter <sharkdp@users.noreply.github.com>2020-03-21 22:21:23 +0100
commit84ba323b1c3c2fec36ea3999e8675379dc64f50d (patch)
treec8879b0d462993b4b2cd594d7e03f24f16447825
parenta8851e1307cdae977ac49c2618a8a00e22000d28 (diff)
Rename output component to 'style compinent', move wrap to separate module
-rw-r--r--examples/simple.rs10
-rw-r--r--src/bin/bat/app.rs29
-rw-r--r--src/bin/bat/main.rs6
-rw-r--r--src/config.rs5
-rw-r--r--src/controller.rs4
-rw-r--r--src/lib.rs1
-rw-r--r--src/printer.rs22
-rw-r--r--src/style.rs86
-rw-r--r--src/wrap.rs11
9 files changed, 88 insertions, 86 deletions
diff --git a/examples/simple.rs b/examples/simple.rs
index 6ceb208a..12fd3b47 100644
--- a/examples/simple.rs
+++ b/examples/simple.rs
@@ -3,7 +3,7 @@ use bat::{
config::Config,
controller::Controller,
inputfile::InputFile,
- style::{OutputComponent, OutputComponents},
+ style::{StyleComponent, StyleComponents},
};
use console::Term;
use std::process;
@@ -20,10 +20,10 @@ fn main() {
term_width: Term::stdout().size().1 as usize,
colored_output: true,
true_color: true,
- output_components: OutputComponents::new(&[
- OutputComponent::Header,
- OutputComponent::Grid,
- OutputComponent::Numbers,
+ style_components: StyleComponents::new(&[
+ StyleComponent::Header,
+ StyleComponent::Grid,
+ StyleComponent::Numbers,
]),
files: files.iter().map(|file| InputFile::Ordinary(file)).collect(),
theme: "1337".into(),
diff --git a/src/bin/bat/app.rs b/src/bin/bat/app.rs
index 281882a7..9ff6efea 100644
--- a/src/bin/bat/app.rs
+++ b/src/bin/bat/app.rs
@@ -22,8 +22,9 @@ use bat::{
errors::*,
inputfile::InputFile,
line_range::{HighlightedLineRanges, LineRange, LineRanges},
- style::{OutputComponent, OutputComponents, OutputWrap},
+ style::{StyleComponent, StyleComponents},
syntax_mapping::SyntaxMapping,
+ wrap::OutputWrap,
};
fn is_truecolor_terminal() -> bool {
@@ -79,7 +80,7 @@ impl App {
pub fn config(&self) -> Result<Config> {
let files = self.files();
- let output_components = self.output_components()?;
+ let style_components = self.style_components()?;
let paging_mode = match self.matches.value_of("paging") {
Some("always") => PagingMode::Always,
@@ -152,7 +153,7 @@ impl App {
Some("character") => OutputWrap::Character,
Some("never") => OutputWrap::None,
Some("auto") | _ => {
- if output_components.plain() {
+ if style_components.plain() {
OutputWrap::None
} else {
OutputWrap::Character
@@ -182,7 +183,7 @@ impl App {
.or_else(|| env::var("BAT_TABS").ok())
.and_then(|t| t.parse().ok())
.unwrap_or(
- if output_components.plain() && paging_mode == PagingMode::Never {
+ if style_components.plain() && paging_mode == PagingMode::Never {
0
} else {
4
@@ -208,7 +209,7 @@ impl App {
.transpose()?
.map(LineRanges::from)
.unwrap_or_default(),
- output_components,
+ style_components,
syntax_mapping,
pager: self.matches.value_of("pager"),
use_italic_text: match self.matches.value_of("italic-text") {
@@ -243,23 +244,23 @@ impl App {
.unwrap_or_else(|| vec![InputFile::StdIn])
}
- fn output_components(&self) -> Result<OutputComponents> {
+ fn style_components(&self) -> Result<StyleComponents> {
let matches = &self.matches;
- Ok(OutputComponents(
+ Ok(StyleComponents(
if matches.value_of("decorations") == Some("never") {
HashSet::new()
} else if matches.is_present("number") {
- [OutputComponent::Numbers].iter().cloned().collect()
+ [StyleComponent::Numbers].iter().cloned().collect()
} else if matches.is_present("plain") {
- [OutputComponent::Plain].iter().cloned().collect()
+ [StyleComponent::Plain].iter().cloned().collect()
} else {
- let env_style_components: Option<Vec<OutputComponent>> = env::var("BAT_STYLE")
+ let env_style_components: Option<Vec<StyleComponent>> = env::var("BAT_STYLE")
.ok()
.map(|style_str| {
style_str
.split(',')
- .map(|x| OutputComponent::from_str(&x))
- .collect::<Result<Vec<OutputComponent>>>()
+ .map(|x| StyleComponent::from_str(&x))
+ .collect::<Result<Vec<StyleComponent>>>()
})
.transpose()?;
@@ -268,12 +269,12 @@ impl App {
.map(|styles| {
styles
.split(',')
- .map(|style| style.parse::<OutputComponent>())
+ .map(|style| style.parse::<StyleComponent>())
.filter_map(|style| style.ok())
.collect::<Vec<_>>()
})
.or(env_style_components)
- .unwrap_or_else(|| vec![OutputComponent::Full])
+ .unwrap_or_else(|| vec![StyleComponent::Full])
.into_iter()
.map(|style| style.components(self.interactive_output))
.fold(HashSet::new(), |mut acc, components| {
diff --git a/src/bin/bat/main.rs b/src/bin/bat/main.rs
index be9697e6..57a31992 100644
--- a/src/bin/bat/main.rs
+++ b/src/bin/bat/main.rs
@@ -32,7 +32,7 @@ use bat::{
config::Config,
errors::*,
inputfile::InputFile,
- style::{OutputComponent, OutputComponents},
+ style::{StyleComponent, StyleComponents},
};
fn run_cache_subcommand(matches: &clap::ArgMatches) -> Result<()> {
@@ -123,9 +123,9 @@ pub fn list_themes(cfg: &Config) -> Result<()> {
let assets = assets_from_cache_or_binary();
let mut config = cfg.clone();
let mut style = HashSet::new();
- style.insert(OutputComponent::Plain);
+ style.insert(StyleComponent::Plain);
config.files = vec![InputFile::ThemePreviewFile];
- config.output_components = OutputComponents(style);
+ config.style_components = StyleComponents(style);
let stdout = io::stdout();
let mut stdout = stdout.lock();
diff --git a/src/config.rs b/src/config.rs
index de2a2619..4efa77fb 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -1,7 +1,8 @@
use crate::inputfile::InputFile;
use crate::line_range::{HighlightedLineRanges, LineRanges};
-use crate::style::{OutputComponents, OutputWrap};
+use crate::style::StyleComponents;
use crate::syntax_mapping::SyntaxMapping;
+use crate::wrap::OutputWrap;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum PagingMode {
@@ -44,7 +45,7 @@ pub struct Config<'a> {
pub true_color: bool,
/// Style elements (grid, line numbers, ...)
- pub output_components: OutputComponents,
+ pub style_components: StyleComponents,
/// Text wrapping mode
pub output_wrap: OutputWrap,
diff --git a/src/controller.rs b/src/controller.rs
index b0458333..ee1a1be3 100644
--- a/src/controller.rs
+++ b/src/controller.rs
@@ -83,7 +83,7 @@ impl<'b> Controller<'b> {
writer: &mut dyn Write,
input_file: InputFile<'a>,
) -> Result<()> {
- if !reader.first_line.is_empty() || self.config.output_components.header() {
+ if !reader.first_line.is_empty() || self.config.style_components.header() {
printer.print_header(writer, input_file)?;
}
@@ -118,7 +118,7 @@ impl<'b> Controller<'b> {
}
RangeCheckResult::InRange => {
- if self.config.output_components.snip() {
+ if self.config.style_components.snip() {
if first_range {
first_range = false;
mid_range = true;
diff --git a/src/lib.rs b/src/lib.rs
index 52856576..afc0a975 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -27,3 +27,4 @@ mod printer;
pub mod style;
pub mod syntax_mapping;
mod terminal;
+pub mod wrap;
diff --git a/src/printer.rs b/src/printer.rs
index bae55bea..629b11da 100644
--- a/src/printer.rs
+++ b/src/printer.rs
@@ -30,8 +30,8 @@ use crate::errors::*;
use crate::inputfile::{InputFile, InputFileReader};
use crate::line_range::RangeCheckResult;
use crate::preprocessor::{expand_tabs, replace_nonprintable};
-use crate::style::OutputWrap;
use crate::terminal::{as_terminal_escaped, to_ansi_color};
+use crate::wrap::OutputWrap;
pub trait Printer {
fn print_header(&mut self, handle: &mut dyn Write, file: InputFile) -> Result<()>;
@@ -116,11 +116,11 @@ impl<'a> InteractivePrinter<'a> {
// Create decorations.
let mut decorations: Vec<Box<dyn Decoration>> = Vec::new();
- if config.output_components.numbers() {
+ if config.style_components.numbers() {
decorations.push(Box::new(LineNumberDecoration::new(&colors)));
}
- if config.output_components.changes() {
+ if config.style_components.changes() {
decorations.push(Box::new(LineChangesDecoration::new(&colors)));
}
@@ -130,7 +130,7 @@ impl<'a> InteractivePrinter<'a> {
// The grid border decoration isn't added until after the panel_width calculation, since the
// print_horizontal_line, print_header, and print_footer functions all assume the panel
// width is without the grid border.
- if config.output_components.grid() && !decorations.is_empty() {
+ if config.style_components.grid() && !decorations.is_empty() {
decorations.push(Box::new(GridBorderDecoration::new(&colors)));
}
@@ -152,7 +152,7 @@ impl<'a> InteractivePrinter<'a> {
None
} else {
// Get the Git modifications
- line_changes = if config.output_components.changes() {
+ line_changes = if config.style_components.changes() {
match file {
InputFile::Ordinary(filename) => get_git_diff(filename),
_ => None,
@@ -206,7 +206,7 @@ impl<'a> InteractivePrinter<'a> {
text_truncated,
" ".repeat(self.panel_width - 1 - text_truncated.len())
);
- if self.config.output_components.grid() {
+ if self.config.style_components.grid() {
format!("{} │ ", text_filled)
} else {
format!("{}", text_filled)
@@ -225,7 +225,7 @@ impl<'a> InteractivePrinter<'a> {
impl<'a> Printer for InteractivePrinter<'a> {
fn print_header(&mut self, handle: &mut dyn Write, file: InputFile) -> Result<()> {
- if !self.config.output_components.header() {
+ if !self.config.style_components.header() {
if Some(ContentType::BINARY) == self.content_type && !self.config.show_nonprintable {
let input = match file {
InputFile::Ordinary(filename) => {
@@ -243,14 +243,14 @@ impl<'a> Printer for InteractivePrinter<'a> {
input
)?;
} else {
- if self.config.output_components.grid() {
+ if self.config.style_components.grid() {
self.print_horizontal_line(handle, '┬')?;
}
}
return Ok(());
}
- if self.config.output_components.grid() {
+ if self.config.style_components.grid() {
self.print_horizontal_line(handle, '┬')?;
write!(
@@ -286,7 +286,7 @@ impl<'a> Printer for InteractivePrinter<'a> {
mode
)?;
- if self.config.output_components.grid() {
+ if self.config.style_components.grid() {
if self.content_type.map_or(false, |c| c.is_text()) || self.config.show_nonprintable {
self.print_horizontal_line(handle, '┼')?;
} else {
@@ -298,7 +298,7 @@ impl<'a> Printer for InteractivePrinter<'a> {
}
fn print_footer(&mut self, handle: &mut dyn Write) -> Result<()> {
- if self.config.output_components.grid()
+ if self.config.style_components.grid()
&& (self.content_type.map_or(false, |c| c.is_text()) || self.config.show_nonprintable)
{
self.print_horizontal_line(handle, '┴')
diff --git a/src/style.rs b/src/style.rs
index e06bba79..a906553a 100644
--- a/src/style.rs
+++ b/src/style.rs
@@ -4,7 +4,7 @@ use std::str::FromStr;
use crate::errors::*;
#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
-pub enum OutputComponent {
+pub enum StyleComponent {
Auto,
Changes,
Grid,
@@ -15,92 +15,80 @@ pub enum OutputComponent {
Plain,
}
-#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
-pub enum OutputWrap {
- Character,
- None,
-}
-
-impl Default for OutputWrap {
- fn default() -> Self {
- OutputWrap::None
- }
-}
-
-impl OutputComponent {
- pub fn components(self, interactive_terminal: bool) -> &'static [OutputComponent] {
+impl StyleComponent {
+ pub fn components(self, interactive_terminal: bool) -> &'static [StyleComponent] {
match self {
- OutputComponent::Auto => {
+ StyleComponent::Auto => {
if interactive_terminal {
- OutputComponent::Full.components(interactive_terminal)
+ StyleComponent::Full.components(interactive_terminal)
} else {
- OutputComponent::Plain.components(interactive_terminal)
+ StyleComponent::Plain.components(interactive_terminal)
}
}
- OutputComponent::Changes => &[OutputComponent::Changes],
- OutputComponent::Grid => &[OutputComponent::Grid],
- OutputComponent::Header => &[OutputComponent::Header],
- OutputComponent::Numbers => &[OutputComponent::Numbers],
- OutputComponent::Snip => &[OutputComponent::Snip],
- OutputComponent::Full => &[
- OutputComponent::Changes,
- OutputComponent::Grid,
- OutputComponent::Header,
- OutputComponent::Numbers,
- OutputComponent::Snip,
+ StyleComponent::Changes => &[StyleComponent::Changes],
+ StyleComponent::Grid => &[StyleComponent::Grid],
+ StyleComponent::Header => &[StyleComponent::Header],
+ StyleComponent::Numbers => &[StyleComponent::Numbers],
+ StyleComponent::Snip => &[StyleComponent::Snip],
+ StyleComponent::Full => &[
+ StyleComponent::Changes,
+ StyleComponent::Grid,
+ StyleComponent::Header,
+ StyleComponent::Numbers,
+ StyleComponent::Snip,
],
- OutputComponent::Plain => &[],
+ StyleComponent::Plain => &[],
}
}
}
-impl FromStr for OutputComponent {
+impl FromStr for StyleComponent {
type Err = Error;
fn from_str(s: &str) -> Result<Self> {
match s {
- "auto" => Ok(OutputComponent::Auto),
- "changes" => Ok(OutputComponent::Changes),
- "grid" => Ok(OutputComponent::Grid),
- "header" => Ok(OutputComponent::Header),
- "numbers" => Ok(OutputComponent::Numbers),
- "snip" => Ok(OutputComponent::Snip),
- "full" => Ok(OutputComponent::Full),
- "plain" => Ok(OutputComponent::Plain),
+ "auto" => Ok(StyleComponent::Auto),
+ "changes" => Ok(StyleComponent::Changes),
+ "grid" => Ok(StyleComponent::Grid),
+ "header" => Ok(StyleComponent::Header),
+ "numbers" => Ok(StyleComponent::Numbers),
+ "snip" => Ok(StyleComponent::Snip),
+ "full" => Ok(StyleComponent::Full),
+ "plain" => Ok(StyleComponent::Plain),
_ => Err(format!("Unknown style '{}'", s).into()),
}
}
}
#[derive(Debug, Clone, Default)]
-pub struct OutputComponents(pub HashSet<OutputComponent>);
+pub struct StyleComponents(pub HashSet<StyleComponent>);
-impl OutputComponents {
- pub fn new(components: &[OutputComponent]) -> OutputComponents {
- OutputComponents(components.iter().cloned().collect())
+impl StyleComponents {
+ pub fn new(components: &[StyleComponent]) -> StyleComponents {
+ StyleComponents(components.iter().cloned().collect())
}
pub fn changes(&self) -> bool {
- self.0.contains(&OutputComponent::Changes)
+ self.0.contains(&StyleComponent::Changes)
}
pub fn grid(&self) -> bool {
- self.0.contains(&OutputComponent::Grid)
+ self.0.contains(&StyleComponent::Grid)
}
pub fn header(&self) -> bool {
- self.0.contains(&OutputComponent::Header)
+ self.0.contains(&StyleComponent::Header)
}
pub fn numbers(&self) -> bool {
- self.0.contains(&OutputComponent::Numbers)
+ self.0.contains(&StyleComponent::Numbers)
}
pub fn snip(&self) -> bool {
- self.0.contains(&OutputComponent::Snip)
+ self.0.contains(&StyleComponent::Snip)
}
pub fn plain(&self) -> bool {
- self.0.iter().all(|c| c == &OutputComponent::Plain)
+ self.0.iter().all(|c| c == &StyleComponent::Plain)
}
}
diff --git a/src/wrap.rs b/src/wrap.rs
new file mode 100644
index 00000000..211469ab
--- /dev/null
+++ b/src/wrap.rs
@@ -0,0 +1,11 @@
+#[derive(Debug, Eq, PartialEq, Copy, Clone, Hash)]
+pub enum OutputWrap {
+ Character,
+ None,
+}
+
+impl Default for OutputWrap {
+ fn default() -> Self {
+ OutputWrap::None
+ }
+}