pub mod action;
pub mod errors;
pub mod interpreter;
use self::action::Action;
use self::errors::{EmptyInput, InvalidEvent};
use self::interpreter::process_action;
use crate::config::State;
use crate::NRResult;
use crate::ParsingResult;
pub fn parse(state: &State, input: &str) -> NRResult<(State, ParsingResult)> {
if !input.is_empty() {
let action = Action::parse(state, input);
match action.is_valid() {
true => process_action(state, action),
false => Err(InvalidEvent.into()),
}
} else {
Err(EmptyInput.into())
}
}
#[cfg(test)]
mod tests;