tri 0.1.0

A simple task bot for Slack.
use std::str::FromStr;

use nom::IResult;

use priority::Priority;

impl FromStr for Priority {
    type Err = ();

    fn from_str(s: &str) -> Result<Priority, ()> {
        match parser(s) {
            IResult::Done("", p) => Ok(p),
            IResult::Done(_, _) |
            IResult::Incomplete(_) |
            IResult::Error(_) => Err(()),
        }
    }
}

named!(pub parser(&str) -> Priority, alt_complete!(
    value!(Priority::Minimal, tag_s!("minimal")) |
    value!(Priority::Low,     tag_s!("low"))     |
    value!(Priority::Medium,  tag_s!("medium"))  |
    value!(Priority::High,    tag_s!("high"))    |
    value!(Priority::Extreme, tag_s!("extreme"))));

#[test]
fn priority() {
    assert_eq!("minimal".parse::<Priority>().unwrap(), Priority::Minimal);
    assert_eq!("low".parse::<Priority>().unwrap(), Priority::Low);
    assert_eq!("medium".parse::<Priority>().unwrap(), Priority::Medium);
    assert_eq!("high".parse::<Priority>().unwrap(), Priority::High);
    assert_eq!("extreme".parse::<Priority>().unwrap(), Priority::Extreme);
}