mod pattern;
mod proxy_record;
pub use self::pattern::*;
pub use self::proxy_record::*;
use std::{fmt, io};
pub mod writer;
#[allow(dead_code)]
#[cfg(windows)]
const NEWLINE: &'static str = "\r\n";
#[allow(dead_code)]
#[cfg(not(windows))]
const NEWLINE: &str = "\n";
pub trait Encode: fmt::Debug + Send + Sync + 'static {
fn encode(&self, w: &mut dyn Write, record: &ProxyRecord) -> io::Result<()>;
}
#[allow(missing_docs)]
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub enum Color {
Black,
Red,
Green,
Yellow,
Blue,
Magenta,
Cyan,
White,
}
#[derive(Clone, Eq, PartialEq, Hash, Default)]
pub struct Style {
pub text: Option<Color>,
pub background: Option<Color>,
pub intense: Option<bool>,
}
impl Style {
pub fn new() -> Style {
Style::default()
}
pub fn text(&mut self, text: Color) -> &mut Style {
self.text = Some(text);
self
}
pub fn background(&mut self, background: Color) -> &mut Style {
self.background = Some(background);
self
}
pub fn intense(&mut self, intense: bool) -> &mut Style {
self.intense = Some(intense);
self
}
}
pub trait Write: io::Write {
#[allow(unused_variables)]
fn set_style(&mut self, style: &Style) -> io::Result<()> {
Ok(())
}
}
impl<'a, W: Write + ?Sized> Write for &'a mut W {
fn set_style(&mut self, style: &Style) -> io::Result<()> {
<W as Write>::set_style(*self, style)
}
}