diff --git a/Cargo.toml b/Cargo.toml index d37b428..871b31e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ coveralls = { repository = "Ortham/esplugin" } [dependencies] encoding_rs = "0.8.17" -nom = "5.0.0" +nom = "6.0.0" flate2 = { version = "1.0.1", optional = true } [dev-dependencies] diff --git a/src/error.rs b/src/error.rs index dbd7990..852d258 100644 --- a/src/error.rs +++ b/src/error.rs @@ -32,13 +32,13 @@ pub enum Error { DecodeError, } -impl From> for Error { - fn from(error: Err<(&[u8], nom::error::ErrorKind)>) -> Self { +impl From>> for Error { + fn from(error: Err>) -> Self { match error { Err::Incomplete(_) => Error::ParsingIncomplete, - Err::Error((input, kind)) | Err::Failure((input, kind)) => Error::ParsingError( - input.to_vec(), - ParsingErrorKind::GenericParserError(kind.description().to_string()), + Err::Error(err) | Err::Failure(err) => Error::ParsingError( + err.input.to_vec(), + ParsingErrorKind::GenericParserError(err.code.description().to_string()), ), } } diff --git a/src/plugin.rs b/src/plugin.rs index 4d6cd60..45c7240 100644 --- a/src/plugin.rs +++ b/src/plugin.rs @@ -486,8 +486,9 @@ fn parse_record_ids<'a>( } else { // Map to the Alpha error kind even though it's misleading, because it // doesn't actually matter what is chosen, the detail is discarded. - let masters = masters(&header_record) - .map_err(|_| nom::Err::Error((input, nom::error::ErrorKind::Alpha)))?; + let masters = masters(&header_record).map_err(|_| { + nom::Err::Error(nom::error::Error::new(input, nom::error::ErrorKind::Alpha)) + })?; let (remaining_input, form_ids) = parse_form_ids(input, game_id)?; let form_ids = hashed_form_ids(&form_ids, game_id, filename, &masters).into(); diff --git a/src/record.rs b/src/record.rs index 94c5b60..16ad225 100644 --- a/src/record.rs +++ b/src/record.rs @@ -168,14 +168,14 @@ impl Record { let (_, record_id) = parse_morrowind_record_id(subrecords_data, &header)?; Ok((remaining_input, record_id)) } else { - let parser = tuple(( + let mut parser = tuple(( delimited(take(RECORD_TYPE_LENGTH), le_u32, take(4usize)), terminated(le_u32, take(4usize)), )); let (remaining_input, (size_of_subrecords, form_id)) = parser(input)?; - let parser = pair( + let mut parser = pair( cond(game_id != GameId::Oblivion, take(4usize)), take(size_of_subrecords), );