use enums::{FormatDesc, ValidationError};
use item_value::ItemValue;
use toml_builder::TomlBuilder;
pub enum ExtractResult
{
Error(ValidationError),
Item(ItemValue),
Group(TomlBuilder)
}
impl ExtractResult
{
pub fn cannot_parse(
format : Option<FormatDesc>
) -> ExtractResult
{
ExtractResult::Error(
ValidationError::CannotParse(format)
)
}
pub fn duration_overflow(
min : Option<String>,
max : Option<String>
) -> ExtractResult
{
assert!(max.is_some());
ExtractResult::Error(
ValidationError::DurationOverflow(min, max)
)
}
pub fn duration_underrun(
min : Option<String>,
max : Option<String>
) -> ExtractResult
{
assert!(min.is_some());
ExtractResult::Error(
ValidationError::DurationUnderrun(min, max)
)
}
pub fn incorrect_type(
expected : &'static str
) -> ExtractResult
{
ExtractResult::Error(
ValidationError::IncorrectType(expected)
)
}
pub fn long(
min : Option<usize>,
max : Option<usize>
) -> ExtractResult
{
assert!(max.is_some());
ExtractResult::Error(
ValidationError::Long(min, max)
)
}
pub fn overrun(
min : Option<i64>,
max : Option<i64>
) -> ExtractResult
{
assert!(max.is_some());
ExtractResult::Error(
ValidationError::Overflow(min, max)
)
}
pub fn short(
min : Option<usize>,
max : Option<usize>
) -> ExtractResult
{
assert!(min.is_some());
ExtractResult::Error(
ValidationError::Short(min, max)
)
}
pub fn underrun(
min : Option<i64>,
max : Option<i64>
) -> ExtractResult
{
assert!(min.is_some());
ExtractResult::Error(
ValidationError::Underrun(min, max)
)
}
}
use std::fmt::{Debug, Formatter, Error};
impl Debug for ExtractResult
{
fn fmt(
&self,
fmt : &mut Formatter
) -> Result<(), Error>
{
match *self
{
ExtractResult::Error(ref err) => write!(fmt, "Error({:?})", err),
ExtractResult::Item(ref val) => write!(fmt, "Item({:?})", val),
ExtractResult::Group(_) => write!(fmt, "Group")
}
}
}