archimedes_crontab_parser 0.5.0

Crontab parsing package for archimedes, a high performance Rust/PostgreSQL job queue
Documentation
use nom::{bytes::complete::take_while1, IResult};

pub(crate) fn nom_crontab_payload(input: &str) -> IResult<&str, serde_json::Value> {
    let (input, json) = take_while1(|c: char| c != '\n' && c != '\r')(input)?;

    let json: serde_json::Value = json5::from_str(json)
        .map_err(|_| nom::Err::Error(nom::error::Error::new(input, nom::error::ErrorKind::Fail)))?;

    Ok((input, json))
}

#[cfg(test)]
mod tests {
    use serde_json::json;

    use super::*;

    #[test]
    fn test_valid_payload() {
        let input = "{onboarding:false,name:\"Jean\"} \nfoo";

        assert_eq!(
            Ok(("\nfoo", json!({ "onboarding": false, "name": "Jean" }),)),
            nom_crontab_payload(input)
        );

        let input = "{toggle:    4 ,name: 'Jean Pierre'}  ";

        assert_eq!(
            Ok(("", json!({ "toggle": 4, "name": "Jean Pierre" }),)),
            nom_crontab_payload(input)
        );
    }
}