mirror of
https://github.com/nushell/nushell.git
synced 2025-07-07 10:01:26 +02:00
cleanup nu-command, remove redundant code (#5208)
This commit is contained in:
@ -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()))),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user