fluvio-jolt 0.2.0

Fluvio JSON to JSON transformation library
Documentation
use std::fmt;
use std::error::Error;
use std::num::ParseIntError;
use thiserror::Error as ThisError;
use super::token::Token;

#[derive(Debug, PartialEq)]
pub struct ParseError {
    pub(crate) pos: usize,
    pub(crate) cause: Box<ParseErrorCause>,
}

#[derive(Debug, ThisError, PartialEq)]
pub enum ParseErrorCause {
    #[error("Unexpected end of input")]
    UnexpectedEndOfInput,
    #[error("Unexpected character: '{0}'")]
    UnexpectedChar(char),
    #[error("Unexpected token: {0:?}")]
    UnexpectedToken(Token),
    #[error("Invalid index literal: {0}")]
    InvalidIndex(ParseIntError),
    #[error("Maximum recursion depth ({0}) reached.")]
    MaximumRecursion(usize),
}

impl fmt::Display for ParseError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(
            f,
            "Failed to parse input. Error near {}.\n{}",
            self.pos, self.cause
        )
    }
}

impl Error for ParseError {}