use crate::core::Narrative;
use crate::Result;
use std::io::{Read, Write};
pub trait Format {
fn import<R: Read>(&self, reader: R) -> Result<Narrative>;
fn import_str(&self, data: &str) -> Result<Narrative> {
self.import(data.as_bytes())
}
fn export<W: Write>(&self, narrative: &Narrative, writer: W) -> Result<()>;
fn export_str(&self, narrative: &Narrative) -> Result<String> {
let mut buffer = Vec::new();
self.export(narrative, &mut buffer)?;
Ok(String::from_utf8(buffer).expect("format produced invalid UTF-8"))
}
}