Skip to content

Commit

Permalink
feat(core-error): change error handling in parse_dar2oar
Browse files Browse the repository at this point in the history
  • Loading branch information
SARDONYX-sard committed Nov 10, 2023
1 parent 6950905 commit 2c6095b
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 10 deletions.
22 changes: 12 additions & 10 deletions dar2oar_core/src/condition_parser/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,33 @@ mod has;
mod macros;

use self::conditions::parse_conditions;
pub use self::dar_interface::ParseError;
use crate::conditions::ConditionSet;
use crate::dar_syntax::{convert_error, syntax::parse_condition};
use anyhow::bail;
use crate::error::{ConvertError, Result};

pub fn parse_dar2oar(input: &str) -> anyhow::Result<Vec<ConditionSet>> {
pub fn parse_dar2oar(input: &str) -> Result<Vec<ConditionSet>> {
let (remain, dar_syn) = match parse_condition(input) {
Ok(syn) => {
tracing::debug!("Input => Parsed DAR:\n{:?}", syn);
syn
}
Err(err) => {
let err = match err {
nom::Err::Incomplete(_) => bail!("Error Incomplete"),
nom::Err::Incomplete(_) => return Err(ConvertError::IncompleteConversion),
nom::Err::Error(err) => err,
nom::Err::Failure(err) => err,
};
bail!(convert_error(input, err));
return Err(ConvertError::InvalidDarSyntax(convert_error(input, err)));
}
};

if !remain.is_empty() {
bail!("DAR syntax error. Unconverted this.:\n{}", remain);
match remain.is_empty() {
true => {
let oar = parse_conditions(dar_syn)?;
tracing::debug!("Parsed DAR => Serialized OAR:\n{:?}", &oar);
Ok(oar.try_into()?)
}
false => Err(ConvertError::InvalidDarSyntax(remain.into())),
}

let oar = parse_conditions(dar_syn)?;
tracing::debug!("Parsed DAR => Serializable OAR:\n{:?}", oar);
Ok(oar.try_into()?)
}
8 changes: 8 additions & 0 deletions dar2oar_core/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ pub enum ConvertError {
NotFoundFileName,
#[error("This is not valid utf8")]
InvalidUtf8,
#[error("Incomplete conversion")]
IncompleteConversion,
#[error("DAR syntax error.:\n{0}")]
InvalidDarSyntax(String),
#[error(transparent)]
ConditionError(#[from] crate::conditions::ConditionError),
#[error(transparent)]
ParseError(#[from] crate::condition_parser::ParseError),
#[error(transparent)]
AnyhowError(#[from] anyhow::Error),
/// Convert json error.
Expand Down

0 comments on commit 2c6095b

Please sign in to comment.