moduforge_rules_template/
error.rs1use serde::ser::SerializeMap;
2use serde::{Serialize, Serializer};
3use thiserror::Error;
4use moduforge_rules_expression::IsolateError;
5
6#[derive(Debug, Error)]
7pub enum TemplateRenderError {
8 #[error("isolate error: {0}")]
9 IsolateError(IsolateError),
10
11 #[error("parser error: {0}")]
12 ParserError(ParserError),
13}
14
15impl From<IsolateError> for TemplateRenderError {
16 fn from(value: IsolateError) -> Self {
17 Self::IsolateError(value)
18 }
19}
20
21impl From<ParserError> for TemplateRenderError {
22 fn from(value: ParserError) -> Self {
23 Self::ParserError(value)
24 }
25}
26
27impl Serialize for TemplateRenderError {
28 fn serialize<S>(
29 &self,
30 serializer: S,
31 ) -> Result<S::Ok, S::Error>
32 where
33 S: Serializer,
34 {
35 match self {
36 TemplateRenderError::IsolateError(isolate) => {
37 isolate.serialize(serializer)
38 },
39 TemplateRenderError::ParserError(parser) => {
40 parser.serialize(serializer)
41 },
42 }
43 }
44}
45
46#[derive(Debug, Error)]
47pub enum ParserError {
48 #[error("Open bracket")]
49 OpenBracket,
50
51 #[error("Close bracket")]
52 CloseBracket,
53}
54
55impl Serialize for ParserError {
56 fn serialize<S>(
57 &self,
58 serializer: S,
59 ) -> Result<S::Ok, S::Error>
60 where
61 S: Serializer,
62 {
63 let mut map = serializer.serialize_map(None)?;
64
65 map.serialize_entry("type", "templateParserError")?;
66
67 match self {
68 ParserError::OpenBracket => {
69 map.serialize_entry("value", "openBracket")?
70 },
71 ParserError::CloseBracket => {
72 map.serialize_entry("value", "closeBracket")?
73 },
74 }
75
76 map.end()
77 }
78}