djoc 0.1.0

The Djot document compiler
Documentation
use anyhow::Error;
use log::{error, info, warn};

pub struct LoggingStatusBackend;

impl tectonic::status::StatusBackend for LoggingStatusBackend {
    fn report(
        &mut self,
        kind: tectonic::status::MessageKind,
        args: std::fmt::Arguments,
        err: Option<&Error>,
    ) {
        match kind {
            tectonic::status::MessageKind::Error => {
                error!("{}{}", args, err.map(|e| e.to_string()).unwrap_or_default());
            }
            tectonic::status::MessageKind::Warning => warn!("{}", args),
            tectonic::status::MessageKind::Note => info!("{}", args),
        }
    }

    fn dump_error_logs(&mut self, output: &[u8]) {
        error!("{}", String::from_utf8_lossy(output));
    }
}