#[allow(deprecated)]
use crate::{PatternWriter, ReadFile};
use sysexits::Result;
pub trait IOProcessor {
#[allow(deprecated)]
fn behaviour(
&self,
input: impl ReadFile,
output: impl PatternWriter,
append: bool,
show_error_messages: bool,
truncate: bool,
) -> Result<()>;
#[allow(deprecated)]
#[deprecated(since = "3.7.7", note = "use `aeruginous_io` instead")]
fn io(
&self,
input: impl ReadFile,
output: impl PatternWriter,
) -> Result<()> {
self.behaviour(input, output, false, true, true)
}
#[allow(deprecated)]
fn io_append(
&self,
input: impl ReadFile,
output: impl PatternWriter,
) -> Result<()> {
self.behaviour(input, output, true, true, false)
}
#[allow(deprecated)]
fn io_append_silently(
&self,
input: impl ReadFile,
output: impl PatternWriter,
) -> Result<()> {
self.behaviour(input, output, true, false, false)
}
#[allow(deprecated)]
#[deprecated(since = "3.7.7", note = "use `aeruginous_io` instead")]
fn io_silent(
&self,
input: impl ReadFile,
output: impl PatternWriter,
) -> Result<()> {
self.behaviour(input, output, false, false, true)
}
#[allow(deprecated)]
fn io_write(
&self,
input: impl ReadFile,
output: impl PatternWriter,
) -> Result<()> {
self.behaviour(input, output, false, true, false)
}
#[allow(deprecated)]
fn io_write_silently(
&self,
input: impl ReadFile,
output: impl PatternWriter,
) -> Result<()> {
self.behaviour(input, output, false, false, false)
}
}
#[allow(deprecated)]
impl<T: Fn(String) -> String> IOProcessor for T {
fn behaviour(
&self,
input: impl ReadFile,
output: impl PatternWriter,
append: bool,
show_error_messages: bool,
truncate: bool,
) -> Result<()> {
output.behaviour(
Box::new(self(input.read()?)),
append,
show_error_messages,
truncate,
)
}
}