notes 0.2.108

A simple tool for taking notes. Work in progress. See: https://gitlab.com/remipassmoilesel/notes
Documentation
extern crate colored;

use colored::*;

#[cfg(test)]
use mockall::automock;

#[cfg_attr(test, automock)]
pub trait Logger {
    fn info(&self, data: &str);
    fn warn(&self, data: &str);
    fn dimmed(&self, data: &str);
    fn log(&self, data: &str);
    fn error(&self, data: &str);
    fn stdout(&self, data: &str);
    fn stderr(&self, data: &str);
}

pub struct LoggerImpl;

impl LoggerImpl {
    pub fn new() -> Self {
        LoggerImpl {}
    }
}

impl Default for LoggerImpl {
    fn default() -> Self {
        LoggerImpl::new()
    }
}

impl Logger for LoggerImpl {
    fn info(&self, data: &str) {
        self.log(&format!("{}\n", data.cyan()));
    }

    fn warn(&self, data: &str) {
        self.log(&format!("{}\n", data.yellow()));
    }

    fn dimmed(&self, data: &str) {
        self.log(&format!("{}\n", data.dimmed()));
    }

    fn log(&self, data: &str) {
        println!("{}", data);
    }

    fn error(&self, data: &str) {
        eprint!("{}\n", data.red());
    }

    fn stdout(&self, data: &str) {
        print!("{}", data);
    }

    fn stderr(&self, data: &str) {
        eprint!("{}", data);
    }
}