blob: afa0f1a79e0eaf8fa982d6fe4231e181f07b5b73 [file] [log] [blame]
use std::io;
use termcolor::WriteColor;
use crate::term::Config;
/// The top-left corner of a source line.
pub struct BorderTopLeft {}
impl BorderTopLeft {
pub fn new() -> BorderTopLeft {
BorderTopLeft {}
}
pub fn emit(&self, writer: &mut impl WriteColor, config: &Config) -> io::Result<()> {
writer.set_color(&config.styles.source_border)?;
write!(writer, "{}", config.chars.source_border_top_left)?;
writer.reset()?;
Ok(())
}
}
/// The top border of a source line.
pub struct BorderTop {
width: usize,
}
impl BorderTop {
pub fn new(width: usize) -> BorderTop {
BorderTop { width }
}
pub fn emit(&self, writer: &mut impl WriteColor, config: &Config) -> io::Result<()> {
writer.set_color(&config.styles.source_border)?;
for _ in 0..self.width {
write!(writer, "{}", config.chars.source_border_top)?
}
writer.reset()?;
Ok(())
}
}
/// The left-hand border of a source line.
pub struct BorderLeft {}
impl BorderLeft {
pub fn new() -> BorderLeft {
BorderLeft {}
}
pub fn emit(&self, writer: &mut impl WriteColor, config: &Config) -> io::Result<()> {
writer.set_color(&config.styles.source_border)?;
write!(writer, "{}", config.chars.source_border_left)?;
writer.reset()?;
Ok(())
}
}
/// The left-hand border of a source line.
pub struct BorderLeftBreak {}
impl BorderLeftBreak {
pub fn new() -> BorderLeftBreak {
BorderLeftBreak {}
}
pub fn emit(&self, writer: &mut impl WriteColor, config: &Config) -> io::Result<()> {
writer.set_color(&config.styles.source_border)?;
write!(writer, "{}", config.chars.source_border_left_break)?;
writer.reset()?;
Ok(())
}
}