use crate::code_type::CodeType;
use std::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum MongolConvertError {
MissTranslateRule(CodeType),
NothingToPop,
NotFoundInMapper(String),
NotSupportedCodeSeries(CodeType),
UnsupportedEnumType(String),
Unsupported(CodeType),
UnsupportedInputRepair(CodeType),
Utn57(String),
}
impl fmt::Display for MongolConvertError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
MongolConvertError::MissTranslateRule(ct) => write!(f, "missing translate rule for {ct:?}"),
MongolConvertError::NothingToPop => write!(f, "nothing to pop"),
MongolConvertError::NotFoundInMapper(k) => write!(f, "key not found in mapper: {k:?}"),
MongolConvertError::NotSupportedCodeSeries(ct) => {
write!(f, "unsupported code series for {ct:?}")
}
MongolConvertError::UnsupportedEnumType(s) => write!(f, "unsupported encoding name: {s:?}"),
MongolConvertError::Unsupported(ct) => write!(f, "conversion not supported for {ct:?}"),
MongolConvertError::UnsupportedInputRepair(ct) => write!(
f,
"suffix separator repair requires menk_letter or delehi input, got {ct:?}"
),
MongolConvertError::Utn57(reason) => write!(f, "UTN #57 conversion failed: {reason}"),
}
}
}
impl std::error::Error for MongolConvertError {}