3 releases

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

#338 in Algorithms

Download history 4664/week @ 2024-09-21 5953/week @ 2024-09-28 7359/week @ 2024-10-05 8143/week @ 2024-10-12 8976/week @ 2024-10-19 9397/week @ 2024-10-26 10950/week @ 2024-11-02 10902/week @ 2024-11-09 10585/week @ 2024-11-16 9173/week @ 2024-11-23 7502/week @ 2024-11-30 5582/week @ 2024-12-07 4330/week @ 2024-12-14 3684/week @ 2024-12-21 3200/week @ 2024-12-28 3107/week @ 2025-01-04

15,016 downloads per month
Used in 5 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–3MB
~54K SLoC