diff --git a/src/input.rs b/src/input.rs index 849dd68..93ac102 100644 --- a/src/input.rs +++ b/src/input.rs @@ -1,5 +1,6 @@ use std::io as stdio; use stdio::stdin; +use crate::parser; pub struct Buffer { buffer: String, @@ -27,11 +28,11 @@ impl Buffer { } } - pub fn is_empty(&self) -> bool { - self.buffer.is_empty() - } - - pub fn get_buffer(&self) -> &String { - &self.buffer + pub fn parse(&self) -> Option> { + if ! self.buffer.is_empty() { + Some(parser::parse(&self.buffer)) + } else { + None + } } } diff --git a/src/main.rs b/src/main.rs index a30723d..8458530 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,17 +7,15 @@ mod parser; fn main() { let mut buffer = input::Buffer::new(); let mut bytes_read: usize = 1; - let mut command_line: String; - let mut argv: Vec; + let mut argv: Option>; while bytes_read != 0 { output::print_ps1(); bytes_read = buffer.read_line(); - if ! buffer.is_empty() { - command_line = buffer.get_buffer().to_string(); - argv = parser::parse(&command_line); - println!("{:?}", argv); + argv = buffer.parse(); + if argv.is_some() { + println!("{:?}", argv.unwrap()); } }