Skip to content
Snippets Groups Projects
Commit b64ebebc authored by stratact's avatar stratact Committed by Michael Aaron Murphy
Browse files

Apply review changes

parent 0e62ce60
No related branches found
No related tags found
No related merge requests found
......@@ -12,8 +12,8 @@ use shell::flow_control::Statement;
/// `Statement`
pub(crate) fn parse_and_validate<'a>(statement: Result<StatementVariant, StatementError>) -> Statement {
match statement {
Ok(StatementVariant::And(statement)) => parse(statement),
Ok(StatementVariant::Or(statement)) => parse(statement),
Ok(StatementVariant::And(statement)) => Statement::And(Box::new(parse(statement))),
Ok(StatementVariant::Or(statement)) => Statement::Or(Box::new(parse(statement))),
Ok(StatementVariant::Default(statement)) => parse(statement),
Err(err) => {
eprintln!("ion: {}", err);
......
......@@ -3,7 +3,7 @@
// - Validate syntax in methods
use std::{
cmp::max, fmt::{self, Display, Formatter}, u16,
fmt::{self, Display, Formatter}, u16,
};
bitflags! {
......@@ -122,18 +122,17 @@ impl<'a> StatementSplitter<'a> {
}
fn get_statement(&mut self, flags: Flags) -> StatementVariant<'a> {
self.flags.insert(flags);
match self.flags {
Flags::AND => {
let variant = if flags.contains(Flags::AND) {
self.flags.remove(Flags::AND);
StatementVariant::And(&self.data[..self.read - 1].trim())
}
Flags::OR => {
} else if flags.contains(Flags::OR) {
self.flags.remove(Flags::OR);
StatementVariant::Or(&self.data[..self.read - 1].trim())
}
_ => {
} else {
StatementVariant::Default(&self.data[self.start..self.read - 1].trim())
}
}
};
self.flags.insert(flags);
variant
}
}
......@@ -146,8 +145,7 @@ impl<'a> Iterator for StatementSplitter<'a> {
let mut else_found = false;
let mut else_pos = 0;
let mut error = None;
let c = self.data;
let mut bytes = c.bytes().skip(self.read);
let mut bytes = self.data.bytes().skip(self.read);
while let Some(character) = bytes.next() {
self.read += 1;
match character {
......@@ -326,6 +324,8 @@ impl<'a> Iterator for StatementSplitter<'a> {
if !output.is_empty() {
if "if" != *output {
self.read = else_pos;
self.flags.remove(Flags::AND);
self.flags.remove(Flags::OR);
return Some(Ok(StatementVariant::Default("else")));
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment