From 55678c5a6fba270f6bb050377ebc9bad19873e36 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Sat, 11 Nov 2017 02:57:40 +0100 Subject: Add TimeType::parse() --- src/error.rs | 7 ++++++- src/timetype.rs | 9 +++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/error.rs b/src/error.rs index f9f1efc..653b368 100644 --- a/src/error.rs +++ b/src/error.rs @@ -9,7 +9,7 @@ error_chain! { } foreign_links { - NomError(::nom::IError); + NomError(::nom::simple_errors::Err); } errors { @@ -59,6 +59,11 @@ error_chain! { display("Cannot compare Month to non-Moment TimeType: {:?}", tt_rep) } + UnknownParserError { + description("Unknown parser error") + display("Unknown parser error") + } + } } diff --git a/src/timetype.rs b/src/timetype.rs index e8df4c8..8a33aa0 100644 --- a/src/timetype.rs +++ b/src/timetype.rs @@ -435,6 +435,15 @@ impl TimeType { pub fn calculate(self) -> Result { do_calculate(self) } + + pub fn parse(s: &str) -> Result { + use parser; + match parser::timetype(s.as_bytes()) { + ::nom::IResult::Done(_, o) => Ok(o.into()), + ::nom::IResult::Error(e) => Err(KE::from(e)), + ::nom::IResult::Incomplete(_) => Err(KEK::UnknownParserError.into()), + } + } } fn do_calculate(tt: TimeType) -> Result { -- cgit v1.2.3