schedule 0.1.0

An in-process scheduler for periodic jobs. Schedule lets you run Rust functions on a cron-like schedule.
Documentation
use std::str::{self, FromStr};
use nom::*;

named!(parse_number <u32>,
    map_res!(
        map_res!(
            ws!(digit),
            str::from_utf8
        ),
        FromStr::from_str
    )
);

#[derive(Debug)]
pub enum Field {
    All,
    Range { start: u32, end: u32 },
    Number(u32),
}

named!(parse_field <Field>,
    alt!(
        complete!(do_parse!(
            start: parse_number >>
            tag!("-")           >>
            end: parse_number   >>
            (Field::Range {
                start: start,
                end:   end,
            })
        )) |
        map!(ws!(tag!("*")), |_| { Field::All }) |
        map!(parse_number, |n| { Field::Number(n) })
    )
);

named!(pub parse <Vec<Field>>, do_parse!(
    fields: many1!(parse_field) >>
    eof!() >>
    (fields)
));