cmark_writer/writer/html/
error.rs1use crate::error::WriteError;
2use std::fmt::{self, Display};
3use std::io;
4
5#[derive(Debug)]
7pub enum HtmlWriteError {
8 Io(io::Error),
10 UnsupportedNodeType(String),
12 InvalidStructure(String),
14 InvalidHtmlTag(String),
16 InvalidHtmlAttribute(String),
18 CustomNodeError(String),
20 }
22
23impl Display for HtmlWriteError {
24 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
25 match self {
26 HtmlWriteError::Io(err) => write!(f, "HTML I/O error: {}", err),
27 HtmlWriteError::UnsupportedNodeType(node_type) => {
28 write!(
29 f,
30 "HTML conversion not supported for node type: {}",
31 node_type
32 )
33 }
34 HtmlWriteError::InvalidStructure(msg) => {
35 write!(f, "Invalid structure for HTML conversion: {}", msg)
36 }
37 HtmlWriteError::InvalidHtmlTag(tag_name) => {
38 write!(f, "Invalid HTML tag name: {}", tag_name)
39 }
40 HtmlWriteError::InvalidHtmlAttribute(attr_name) => {
41 write!(f, "Invalid HTML attribute name: {}", attr_name)
42 }
43 HtmlWriteError::CustomNodeError(msg) => {
44 write!(f, "Error writing custom node: {}", msg)
45 }
46 }
47 }
48}
49
50impl std::error::Error for HtmlWriteError {
51 fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
52 match self {
53 HtmlWriteError::Io(err) => Some(err),
54 _ => None,
55 }
56 }
57}
58
59impl HtmlWriteError {
60 pub fn into_write_error(self) -> WriteError {
62 match self {
63 HtmlWriteError::Io(err) => WriteError::IoError(err),
64 HtmlWriteError::UnsupportedNodeType(msg) => WriteError::Custom {
65 message: format!("HTML writer error: {}", msg),
66 code: None,
67 },
68 HtmlWriteError::InvalidStructure(msg) => WriteError::InvalidStructure(msg),
69 HtmlWriteError::InvalidHtmlTag(tag) => WriteError::InvalidHtmlTag(tag),
70 HtmlWriteError::InvalidHtmlAttribute(attr) => WriteError::InvalidHtmlAttribute(attr),
71 HtmlWriteError::CustomNodeError(msg) => WriteError::Custom {
72 message: format!("Custom node error: {}", msg),
73 code: None,
74 },
75 }
76 }
77}
78
79impl From<io::Error> for HtmlWriteError {
81 fn from(err: io::Error) -> Self {
82 HtmlWriteError::Io(err)
83 }
84}
85
86pub type HtmlWriteResult<T> = Result<T, HtmlWriteError>;