1
0
mirror of https://github.com/sharkdp/bat.git synced 2025-09-04 04:12:31 +01:00

Add first-line detection for all input types

closes #205
This commit is contained in:
sharkdp
2018-10-07 13:26:50 +02:00
committed by David Peter
parent 869cf6368c
commit 0502a3bd4a
3 changed files with 40 additions and 29 deletions

View File

@@ -23,13 +23,18 @@ impl<'b> Controller<'b> {
let writer = output_type.handle()?;
let mut no_errors: bool = true;
let stdin = io::stdin();
for input_file in &self.config.files {
let mut reader = input_file.get_reader(&stdin)?;
let result = if self.config.loop_through {
let mut printer = SimplePrinter::new();
self.print_file(&mut printer, writer, *input_file)
self.print_file(reader, &mut printer, writer, *input_file)
} else {
let mut printer = InteractivePrinter::new(&self.config, &self.assets, *input_file);
self.print_file(&mut printer, writer, *input_file)
let mut printer =
InteractivePrinter::new(&self.config, &self.assets, *input_file, &mut reader);
self.print_file(reader, &mut printer, writer, *input_file)
};
if let Err(error) = result {
@@ -43,13 +48,11 @@ impl<'b> Controller<'b> {
fn print_file<'a, P: Printer>(
&self,
reader: InputFileReader,
printer: &mut P,
writer: &mut Write,
input_file: InputFile<'a>,
) -> Result<()> {
let stdin = io::stdin();
let reader = input_file.get_reader(&stdin)?;
printer.print_header(writer, input_file)?;
self.print_file_ranges(printer, writer, reader, &self.config.line_range)?;
printer.print_footer(writer)?;