use thiserror::Error;
#[derive(Debug, Clone, PartialEq, Eq, Error)]
#[non_exhaustive]
pub enum ParseError {
#[error("invalid color: {0}")]
InvalidColor(String),
#[error("invalid style: {0}")]
InvalidStyle(String),
#[error("invalid markup: {0}")]
InvalidMarkup(String),
#[error("unclosed tag: {0}")]
UnclosedTag(String),
#[error("unexpected closing tag: {0}")]
UnexpectedClosingTag(String),
#[error("no emoji called {0:?}")]
NoEmoji(String),
}
impl ParseError {
pub fn invalid_color(s: impl Into<String>) -> Self {
ParseError::InvalidColor(s.into())
}
pub fn invalid_style(s: impl Into<String>) -> Self {
ParseError::InvalidStyle(s.into())
}
pub fn invalid_markup(s: impl Into<String>) -> Self {
ParseError::InvalidMarkup(s.into())
}
pub fn no_emoji(s: impl Into<String>) -> Self {
ParseError::NoEmoji(s.into())
}
}
pub type Result<T> = std::result::Result<T, ParseError>;