@@ -1,83 +0,0 @@
1−use bat::{
2− self,
3− assets::HighlightingAssets,
4− inputfile::InputFile,
5− line_range::{LineRange, LineRanges, RangeCheckResult},
6− output::OutputType,
7− printer::{InteractivePrinter, Printer},
8− style::{OutputComponent, OutputComponents},
9− Config,
10−};
11−use console::Term;
12−use std::{collections::HashSet, io};
13−
14−fn main() -> bat::errors::Result<()> {
15− let config = Config {
16− term_width: Term::stdout().size().1 as usize,
17− colored_output: true,
18− true_color: true,
19− theme: "1337".into(),
20− line_ranges: LineRanges::from(vec![
21− LineRange::from("5:7")?,
22− LineRange::from("92:97")?,
23− LineRange::from("15:17")?,
24− ]),
25− output_components: OutputComponents(with_full_decorations()),
26− files: vec![InputFile::Ordinary("build.rs")],
27− ..Default::default()
28− };
29− let assets = HighlightingAssets::new();
30−
31− let mut output_type = OutputType::from_mode(config.paging_mode, config.pager)?;
32− let writer = output_type.handle()?;
33− let stdin = io::stdin();
34−
35− for input_file in &config.files {
36− let mut reader = input_file.get_reader(&stdin)?;
37− let mut printer = InteractivePrinter::new(&config, &assets, *input_file, &mut reader);
38−
39− printer.print_header(writer, *input_file)?;
40−
41− if !reader.first_line.is_empty() {
42− let mut line_buffer = Vec::new();
43− let mut line_number = 1;
44− let mut has_snip = true; // skip first line snip
45−
46− while reader.read_line(&mut line_buffer)? {
47− match config.line_ranges.check(line_number) {
48− RangeCheckResult::OutsideRange => {
49− if !has_snip {
50− printer.print_snip(writer)?;
51− has_snip = true;
52− }
53− }
54− RangeCheckResult::InRange => {
55− printer.print_line(
56− /*out_of_range = */ false,
57− writer,
58− line_number,
59− &line_buffer,
60− )?;
61− has_snip = false;
62− }
63− RangeCheckResult::AfterLastRange => break,
64− }
65−
66− line_number += 1;
67− line_buffer.clear();
68− }
69− }
70−
71− printer.print_footer(writer)?;
72− }
73−
74− Ok(())
75−}
76−
77−fn with_full_decorations() -> HashSet<OutputComponent> {
78− OutputComponent::Full
79− .components(Default::default())
80− .iter()
81− .cloned()
82− .collect()
83−}