3 releases

0.1.2 Sep 12, 2024
0.1.1 Sep 11, 2024
0.1.0 Sep 11, 2024

#321 in Algorithms

Download history 216/week @ 2024-09-06 534/week @ 2024-09-13 4561/week @ 2024-09-20 5796/week @ 2024-09-27 7236/week @ 2024-10-04 7778/week @ 2024-10-11 9103/week @ 2024-10-18 9150/week @ 2024-10-25 10841/week @ 2024-11-01 10865/week @ 2024-11-08 10749/week @ 2024-11-15 9341/week @ 2024-11-22 7885/week @ 2024-11-29 4916/week @ 2024-12-06

34,514 downloads per month
Used in 4 crates (3 directly)

Apache-2.0

54KB
951 lines

English to CronJob Syntax Converter

Crates.io Docs.rs

This project is inspired by the library natural-cron, which converts natural language into cron expressions. english-to-cron brings similar functionality to the Rust ecosystem, allowing developers to easily schedule cron jobs using English text.

Features

  • Converts various English text descriptions into cron job syntax.
  • Supports complex patterns including specific days, time ranges, and more.
  • Handles multiple time formats including AM/PM and 24-hour notation.

Installation

Add the following line to your Cargo.toml under [dependencies]:

english_to_cron = "0.1.0" 

Usage

Simply provide an English phrase describing the schedule, and the library will return the corresponding cron job syntax.

use english_to_cron::str_cron_syntax;

fn main() {
    assert_eq!(str_cron_syntax("every 15 seconds").unwrap(), "0/15 * * * * ? *");
    assert_eq!(str_cron_syntax("every minute").unwrap(), "0 * * * * ? *");
    assert_eq!(str_cron_syntax("every day at 4:00 pm").unwrap(), "0 0 16 */1 * ? *");
    assert_eq!(str_cron_syntax("at 10:00 am").unwrap(), "0 0 10 * * ? *");
    assert_eq!(str_cron_syntax("Run at midnight on the 1st and 15th of the month").unwrap(), "0 0 0 1,15 * ? *");
    assert_eq!(str_cron_syntax("on Sunday at 12:00").unwrap(), "0 0 12 ? * SUN *");
}

Full List of Supported English Patterns

English Phrase CronJob Syntax
every 15 seconds 0/15 * * * * ? *
run every minute 0 * * * * ? *
fire every day at 4:00 pm 0 0 16 */1 * ? *
at 10:00 am 0 0 10 * * ? *
run at midnight on the 1st and 15th of the month 0 0 0 1,15 * ? *
On Sunday at 12:00 0 0 12 ? * SUN *
7pm every Thursday 0 0 19 ? * THU *
midnight on Tuesdays 0 0 ? * TUE *

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests to help improve the library.

Dependencies

~2.2–3MB
~54K SLoC