cleanup nu-command, remove redundant code (#5208)

This commit is contained in:
Michael Angerman
2022-04-15 23:16:46 -07:00
committed by GitHub
parent cb3276fb3b
commit 1bad40726d
5 changed files with 44 additions and 93 deletions

View File

@ -7,6 +7,7 @@ use nu_protocol::ShellError;
use dialoguer::Input;
use std::error::Error;
use std::io::{BufRead, BufReader, Read};
#[derive(Default)]
pub struct FileStructure {
@ -120,3 +121,37 @@ pub fn get_interactive_confirmation(prompt: String) -> Result<bool, Box<dyn Erro
Ok(false)
}
}
pub struct BufferedReader<R: Read> {
pub input: BufReader<R>,
}
impl<R: Read> BufferedReader<R> {
pub fn new(input: BufReader<R>) -> Self {
Self { input }
}
}
impl<R: Read> Iterator for BufferedReader<R> {
type Item = Result<Vec<u8>, ShellError>;
fn next(&mut self) -> Option<Self::Item> {
let buffer = self.input.fill_buf();
match buffer {
Ok(s) => {
let result = s.to_vec();
let buffer_len = s.len();
if buffer_len == 0 {
None
} else {
self.input.consume(buffer_len);
Some(Ok(result))
}
}
Err(e) => Some(Err(ShellError::IOError(e.to_string()))),
}
}
}