use std::fmt::Display;
use std::path::Path;
#[macro_export]
macro_rules! status {
($($arg:tt)*) => {
eprintln!($($arg)*)
};
}
#[allow(dead_code)]
pub fn file_written(path: impl AsRef<Path>) {
eprintln!("Written to: {}", path.as_ref().display());
}
#[allow(dead_code)]
pub fn file_written_desc(desc: impl Display, path: impl AsRef<Path>) {
eprintln!("{desc} written to: {}", path.as_ref().display());
}
pub fn note(msg: impl Display) {
eprintln!("{msg}");
}
#[allow(dead_code)]
pub fn blank() {
eprintln!();
}
pub fn batch_ok(input: &str, output: impl AsRef<Path>, pages: u32) {
eprintln!(
" [OK] {} -> {} ({} pages)",
input,
output.as_ref().display(),
pages
);
}
pub fn batch_fail(input: &str, error: impl Display) {
eprintln!(" [FAIL] {input} - {error}");
}
pub fn batch_summary(success: usize, failed: usize, elapsed_secs: f64) {
eprintln!("\nBatch conversion complete:");
eprintln!(" Success: {success}");
eprintln!(" Failed: {failed}");
eprintln!(" Time: {elapsed_secs:.2}s");
}
#[allow(dead_code)]
pub fn validation_counts(errors: usize, warnings: usize, infos: usize) {
eprintln!("Found {errors} errors, {warnings} warnings, {infos} info messages");
}
#[allow(dead_code)]
pub fn validation_issue(prefix: &str, category: impl Display, description: impl Display) {
eprintln!("{prefix} [{category}] {description}");
}
#[allow(dead_code)]
pub fn validation_clause(clause: &str) {
eprintln!(" Clause: {clause}");
}
#[allow(dead_code)]
pub fn validation_suggestion(suggestion: &str) {
eprintln!(" Suggestion: {suggestion}");
}
#[allow(dead_code)]
pub fn validation_page(page: u32) {
eprintln!(" Page: {page}");
}
#[allow(dead_code)]
pub fn validation_result(is_compliant: bool, level: impl Display) {
if is_compliant {
eprintln!("Result: COMPLIANT with {level}");
} else {
eprintln!("Result: NOT COMPLIANT with {level}");
}
}