mod json;
mod markdown;
mod patch;
mod pretty;
pub use json::JsonFormatter;
pub use markdown::MarkdownFormatter;
pub use patch::JsonPatchFormatter;
pub use pretty::PrettyFormatter;
use crate::{Diff, FormatError};
pub trait Formatter {
fn format(&self, diff: &Diff) -> Result<String, FormatError>;
}
impl Diff {
pub fn to_pretty(&self) -> String {
PrettyFormatter::new()
.format(self)
.unwrap_or_else(|_| String::from("Error formatting diff"))
}
pub fn to_json(&self) -> Result<String, FormatError> {
JsonFormatter::new().pretty().format(self)
}
pub fn to_json_patch(&self) -> Result<String, FormatError> {
JsonPatchFormatter::new().format(self)
}
pub fn to_markdown(&self) -> Result<String, FormatError> {
MarkdownFormatter::new().format(self)
}
}