refactor: update filter plugins to use boxed reader/writer parameters
Co-authored-by: aider (openai/andrew/openrouter/sonoma-sky-alpha) <aider@aider.chat>
This commit is contained in:
@@ -70,12 +70,12 @@ impl GrepFilter {
|
|||||||
/// filter.filter(&mut input, &mut output)?;
|
/// filter.filter(&mut input, &mut output)?;
|
||||||
/// ```
|
/// ```
|
||||||
impl FilterPlugin for GrepFilter {
|
impl FilterPlugin for GrepFilter {
|
||||||
fn filter(&mut self, reader: &mut dyn Read, writer: &mut dyn Write) -> Result<()> {
|
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
|
||||||
let mut buf_reader = std::io::BufReader::new(reader);
|
let mut buf_reader = std::io::BufReader::new(reader.as_mut());
|
||||||
for line in buf_reader.by_ref().lines() {
|
for line in buf_reader.by_ref().lines() {
|
||||||
let line = line?;
|
let line = line?;
|
||||||
if self.regex.is_match(&line) {
|
if self.regex.is_match(&line) {
|
||||||
writeln!(writer, "{}", line)?;
|
writeln!(writer.as_mut(), "{}", line)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
@@ -124,4 +124,4 @@ impl FilterPlugin for GrepFilter {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ impl HeadBytesFilter {
|
|||||||
/// // Input "Hello World" becomes "Hello"
|
/// // Input "Hello World" becomes "Hello"
|
||||||
/// ```
|
/// ```
|
||||||
impl FilterPlugin for HeadBytesFilter {
|
impl FilterPlugin for HeadBytesFilter {
|
||||||
fn filter(&mut self, reader: &mut dyn Read, writer: &mut dyn Write) -> Result<()> {
|
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
|
||||||
if self.remaining == 0 {
|
if self.remaining == 0 {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
@@ -80,11 +80,11 @@ impl FilterPlugin for HeadBytesFilter {
|
|||||||
let mut buffer = vec![0; PIPESIZE];
|
let mut buffer = vec![0; PIPESIZE];
|
||||||
while self.remaining > 0 {
|
while self.remaining > 0 {
|
||||||
let to_read = std::cmp::min(self.remaining, PIPESIZE);
|
let to_read = std::cmp::min(self.remaining, PIPESIZE);
|
||||||
let bytes_read = reader.read(&mut buffer[..to_read])?;
|
let bytes_read = reader.as_mut().read(&mut buffer[..to_read])?;
|
||||||
if bytes_read == 0 {
|
if bytes_read == 0 {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
writer.write_all(&buffer[..bytes_read])?;
|
writer.as_mut().write_all(&buffer[..bytes_read])?;
|
||||||
self.remaining -= bytes_read;
|
self.remaining -= bytes_read;
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
@@ -182,15 +182,15 @@ impl HeadLinesFilter {
|
|||||||
/// // Input "Line1\nLine2\nLine3" becomes "Line1\nLine2\n"
|
/// // Input "Line1\nLine2\nLine3" becomes "Line1\nLine2\n"
|
||||||
/// ```
|
/// ```
|
||||||
impl FilterPlugin for HeadLinesFilter {
|
impl FilterPlugin for HeadLinesFilter {
|
||||||
fn filter(&mut self, reader: &mut dyn Read, writer: &mut dyn Write) -> Result<()> {
|
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
|
||||||
if self.remaining == 0 {
|
if self.remaining == 0 {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut buf_reader = std::io::BufReader::new(reader);
|
let mut buf_reader = std::io::BufReader::new(reader.as_mut());
|
||||||
for line in buf_reader.by_ref().lines() {
|
for line in buf_reader.by_ref().lines() {
|
||||||
let line = line?;
|
let line = line?;
|
||||||
writeln!(writer, "{}", line)?;
|
writeln!(writer.as_mut(), "{}", line)?;
|
||||||
self.remaining -= 1;
|
self.remaining -= 1;
|
||||||
if self.remaining == 0 {
|
if self.remaining == 0 {
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ use std::path::PathBuf;
|
|||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
|
|
||||||
//// Service for handling compression and decompression of item content.
|
pub struct CompressionService;
|
||||||
|
|
||||||
|
/// Service for handling compression and decompression of item content.
|
||||||
///
|
///
|
||||||
/// Provides methods to read compressed item files either fully into memory
|
/// Provides methods to read compressed item files either fully into memory
|
||||||
/// or as streaming readers. Supports various compression types via engines.
|
/// or as streaming readers. Supports various compression types via engines.
|
||||||
@@ -17,19 +19,6 @@ use anyhow::anyhow;
|
|||||||
/// let service = CompressionService::new();
|
/// let service = CompressionService::new();
|
||||||
/// let content = service.get_item_content(path, "gzip")?;
|
/// let content = service.get_item_content(path, "gzip")?;
|
||||||
/// ```
|
/// ```
|
||||||
pub struct CompressionService;
|
|
||||||
|
|
||||||
/// Service for handling compression and decompression of item content.
|
|
||||||
///
|
|
||||||
/// Provides methods to read compressed item files either fully into memory
|
|
||||||
/// or as streaming readers. Supports various compression types via engines.
|
|
||||||
///
|
|
||||||
/// # Examples
|
|
||||||
///
|
|
||||||
pub struct CompressionService;
|
|
||||||
|
|
||||||
/// Service for handling compression and decompression of item content.
|
|
||||||
///
|
|
||||||
/// Provides methods to read compressed item files either fully into memory
|
/// Provides methods to read compressed item files either fully into memory
|
||||||
/// or as streaming readers. Supports various compression types via engines.
|
/// or as streaming readers. Supports various compression types via engines.
|
||||||
///
|
///
|
||||||
|
|||||||
Reference in New Issue
Block a user