ragit_pdl/
error.rs

1use crate::schema::SchemaParseError;
2use ragit_fs::FileError;
3use std::string::FromUtf8Error;
4
5mod json_type;
6
7pub use json_type::JsonType;
8
9#[derive(Debug)]
10pub enum Error {
11    RoleMissing,
12    InvalidPdl(String),
13    InvalidTurnSeparator(String),
14    InvalidInlineBlock,
15    InvalidImageType(String),
16    InvalidRole(String),
17    FileError(FileError),
18    Utf8Error(FromUtf8Error),
19    SchemaParseError(SchemaParseError),
20    JsonTypeError {
21        expected: JsonType,
22        got: JsonType,
23    },
24
25    /// see <https://docs.rs/serde_json/latest/serde_json/struct.Error.html>
26    JsonSerdeError(serde_json::Error),
27
28    /// see <https://docs.rs/base64/latest/base64/enum.DecodeError.html>
29    Base64DecodeError(base64::DecodeError),
30
31    /// see <https://docs.rs/tera/latest/tera/struct.Error.html>
32    TeraError(tera::Error),
33}
34
35impl From<SchemaParseError> for Error {
36    fn from(e: SchemaParseError) -> Error {
37        match e {
38            SchemaParseError::Utf8Error(e) => Error::Utf8Error(e),
39            e => Error::SchemaParseError(e),
40        }
41    }
42}
43
44impl From<serde_json::Error> for Error {
45    fn from(e: serde_json::Error) -> Error {
46        Error::JsonSerdeError(e)
47    }
48}
49
50impl From<FromUtf8Error> for Error {
51    fn from(e: FromUtf8Error) -> Error {
52        Error::Utf8Error(e)
53    }
54}
55
56impl From<FileError> for Error {
57    fn from(e: FileError) -> Error {
58        Error::FileError(e)
59    }
60}
61
62impl From<tera::Error> for Error {
63    fn from(e: tera::Error) -> Error {
64        Error::TeraError(e)
65    }
66}
67
68impl From<base64::DecodeError> for Error {
69    fn from(e: base64::DecodeError) -> Error {
70        Error::Base64DecodeError(e)
71    }
72}