use std::ops::RangeInclusive;
pub mod html;
pub mod terminal;
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct RenderOptions {
pub show_line_numbers: bool,
pub line_number_start: isize,
pub highlight_lines: Vec<RangeInclusive<usize>>,
pub hide_lines: Vec<RangeInclusive<usize>>,
}
impl Default for RenderOptions {
fn default() -> Self {
Self {
show_line_numbers: false,
line_number_start: 1,
highlight_lines: Vec::new(),
hide_lines: Vec::new(),
}
}
}
impl RenderOptions {
pub(crate) fn line_number_width(&self, line_count: usize) -> usize {
if !self.show_line_numbers {
return 0;
}
let first_line = self.line_number_start.to_string().chars().count();
let last_line = line_count
.saturating_add_signed(self.line_number_start)
.to_string()
.chars()
.count();
first_line.max(last_line)
}
}