Combine the error types.

This commit is contained in:
Tom Alexander 2023-04-21 18:36:01 -04:00
parent 04dfffc000
commit a1724dae52
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE
23 changed files with 57 additions and 68 deletions

View File

@ -1,5 +1,4 @@
mod diff;
mod error;
mod parse;
mod sexp;
mod util;

View File

@ -1,3 +1,6 @@
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use std::collections::HashMap;
use nom::branch::alt;
@ -16,8 +19,6 @@ use nom::sequence::delimited;
use nom::sequence::preceded;
use nom::sequence::tuple;
use super::error::Res;
#[derive(Debug)]
pub enum Token<'s> {
Atom(&'s str),

4
src/error/mod.rs Normal file
View File

@ -0,0 +1,4 @@
mod error;
pub use error::CustomError;
pub use error::MyError;
pub use error::Res;

View File

@ -1,6 +1,7 @@
#![feature(round_char_boundary)]
#![feature(exit_status_error)]
mod compare;
mod error;
mod parser;
pub use compare::compare_document;
pub use compare::emacs_parse_org_document;

View File

@ -1,3 +1,6 @@
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use nom::branch::alt;
use nom::bytes::complete::is_not;
use nom::bytes::complete::tag;
@ -13,9 +16,6 @@ use nom::sequence::tuple;
use super::util::get_consumed;
use super::Context;
use crate::parser::error::CustomError;
use crate::parser::error::MyError;
use crate::parser::error::Res;
use crate::parser::parser_context::ContextElement;
use crate::parser::parser_with_context::parser_with_context;
use crate::parser::util::exit_matcher_parser;

View File

@ -1,3 +1,6 @@
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use crate::parser::comment::comment;
use crate::parser::element_parser::element;
use crate::parser::exiting::ExitClass;
@ -25,7 +28,6 @@ use nom::multi::many_till;
use nom::sequence::tuple;
use super::element::Element;
use super::error::Res;
use super::object::Object;
use super::parser_with_context::parser_with_context;
use super::source::Source;

View File

@ -1,3 +1,6 @@
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use nom::branch::alt;
use nom::bytes::complete::tag;
use nom::bytes::complete::tag_no_case;
@ -12,9 +15,6 @@ use nom::sequence::tuple;
use super::Context;
use crate::parser::element_parser::element;
use crate::parser::error::CustomError;
use crate::parser::error::MyError;
use crate::parser::error::Res;
use crate::parser::exiting::ExitClass;
use crate::parser::parser_context::ContextElement;
use crate::parser::parser_context::ExitMatcherNode;

View File

@ -1,8 +1,8 @@
use super::error::Res;
use super::Context;
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use crate::parser::element_parser::element;
use crate::parser::error::CustomError;
use crate::parser::error::MyError;
use crate::parser::exiting::ExitClass;
use crate::parser::greater_element::DynamicBlock;
use crate::parser::lesser_element::Paragraph;

View File

@ -2,7 +2,6 @@ use super::comment::comment;
use super::drawer::drawer;
use super::dynamic_block::dynamic_block;
use super::element::Element;
use super::error::Res;
use super::footnote_definition::footnote_definition;
use super::greater_block::greater_block;
use super::lesser_block::comment_block;
@ -13,6 +12,9 @@ use super::lesser_block::verse_block;
use super::paragraph::paragraph;
use super::plain_list::plain_list;
use super::Context;
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use crate::parser::parser_with_context::parser_with_context;
use crate::parser::table::org_mode_table;
use nom::branch::alt;

View File

@ -1,25 +0,0 @@
use nom::error::ErrorKind;
use nom::error::ParseError;
use nom::IResult;
pub type Res<T, U> = IResult<T, U, CustomError<T>>;
#[derive(Debug, PartialEq)]
pub enum CustomError<I> {
MyError(MyError<I>),
Nom(I, ErrorKind),
}
#[derive(Debug, PartialEq)]
pub struct MyError<I>(pub I);
impl<I> ParseError<I> for CustomError<I> {
fn from_error_kind(input: I, kind: ErrorKind) -> Self {
CustomError::Nom(input, kind)
}
fn append(_input: I, _kind: ErrorKind, mut other: Self) -> Self {
// Doesn't do append like VerboseError
other
}
}

View File

@ -1,9 +1,9 @@
use super::error::Res;
use super::util::WORD_CONSTITUENT_CHARACTERS;
use super::Context;
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use crate::parser::element_parser::element;
use crate::parser::error::CustomError;
use crate::parser::error::MyError;
use crate::parser::exiting::ExitClass;
use crate::parser::greater_element::FootnoteDefinition;
use crate::parser::parser_context::ContextElement;

View File

@ -1,8 +1,8 @@
use super::error::Res;
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use super::Context;
use crate::parser::element_parser::element;
use crate::parser::error::CustomError;
use crate::parser::error::MyError;
use crate::parser::exiting::ExitClass;
use crate::parser::greater_element::GreaterBlock;
use crate::parser::parser_context::ContextElement;

View File

@ -1,3 +1,6 @@
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use nom::branch::alt;
use nom::bytes::complete::is_not;
use nom::bytes::complete::tag_no_case;
@ -12,7 +15,6 @@ use nom::combinator::verify;
use nom::multi::many_till;
use nom::sequence::tuple;
use super::error::Res;
use super::Context;
use crate::parser::exiting::ExitClass;
use crate::parser::lesser_element::CommentBlock;

View File

@ -4,7 +4,6 @@ mod drawer;
mod dynamic_block;
mod element;
mod element_parser;
mod error;
mod exiting;
mod footnote_definition;
mod greater_block;

View File

@ -1,9 +1,11 @@
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use nom::combinator::map;
use nom::combinator::not;
use crate::parser::object::Object;
use super::error::Res;
use super::parser_with_context::parser_with_context;
use super::plain_text::plain_text;
use super::Context;

View File

@ -1,3 +1,6 @@
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use nom::branch::alt;
use nom::combinator::eof;
use nom::combinator::recognize;
@ -16,7 +19,6 @@ use crate::parser::util::maybe_consume_trailing_whitespace_if_not_exiting;
use crate::parser::util::start_of_line;
use super::element_parser::non_paragraph_element;
use super::error::Res;
use super::lesser_element::Paragraph;
use super::util::blank_line;
use super::util::get_consumed;

View File

@ -1,8 +1,8 @@
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use std::rc::Rc;
use super::error::CustomError;
use super::error::MyError;
use super::error::Res;
use super::list::List;
use super::list::Node;
use super::Context;

View File

@ -1,12 +1,12 @@
use super::error::CustomError;
use super::error::MyError;
use super::error::Res;
use super::greater_element::PlainList;
use super::greater_element::PlainListItem;
use super::parser_with_context::parser_with_context;
use super::util::maybe_consume_trailing_whitespace_if_not_exiting;
use super::util::non_whitespace_character;
use super::Context;
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use crate::parser::element_parser::element;
use crate::parser::exiting::ExitClass;
use crate::parser::parser_context::ContextElement;

View File

@ -1,11 +1,9 @@
use nom::combinator::not;
use crate::parser::error::CustomError;
use crate::parser::error::MyError;
use super::error::Res;
use super::object::PlainText;
use super::Context;
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use nom::combinator::not;
#[tracing::instrument(ret, level = "debug")]
pub fn plain_text<'r, 's>(context: Context<'r, 's>, input: &'s str) -> Res<&'s str, PlainText<'s>> {

View File

@ -1,3 +1,6 @@
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use nom::branch::alt;
use nom::bytes::complete::is_not;
use nom::bytes::complete::tag;
@ -13,9 +16,6 @@ use nom::multi::many_till;
use nom::sequence::tuple;
use super::Context;
use crate::parser::error::CustomError;
use crate::parser::error::MyError;
use crate::parser::error::Res;
use crate::parser::exiting::ExitClass;
use crate::parser::greater_element::NodeProperty;
use crate::parser::greater_element::PropertyDrawer;

View File

@ -1,3 +1,6 @@
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use nom::branch::alt;
use nom::bytes::complete::is_not;
use nom::bytes::complete::tag;
@ -13,7 +16,6 @@ use nom::multi::many_till;
use nom::sequence::tuple;
use super::Context;
use crate::parser::error::Res;
use crate::parser::exiting::ExitClass;
use crate::parser::greater_element::TableRow;
use crate::parser::lesser_element::TableCell;

View File

@ -1,10 +1,10 @@
use crate::parser::parser_with_context::parser_with_context;
use super::error::CustomError;
use super::error::MyError;
use super::error::Res;
use super::parser_context::ContextElement;
use super::Context;
use crate::error::CustomError;
use crate::error::MyError;
use crate::error::Res;
use nom::branch::alt;
use nom::character::complete::line_ending;
use nom::character::complete::multispace0;