You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Matthias Beyer 73735d2b73 Fix repo URL 4 weeks ago
.builds Remove legacy-rust builds for now 1 year ago
.github github: Pull request template: We are on sourcehut now 1 year ago
doc Add language documentation 3 years ago
examples Make example output pretty 4 years ago
fuzz Add simple fuzzer for parser 4 years ago
src Merge branch 'thiserror' 1 year ago
.gitignore Initial import 4 years ago
.travis.yml Update minimum rustc version to 1.32.0 2 years ago
Cargo.toml Fix repo URL 4 weeks ago
LICENSE Initial import 4 years ago
README.md Revert "Add vacation notice" 2 years ago

README.md

Kairos

Calculate times with chrono "plain text like" in Rust.

Build Status license Tokei

From Wikipedia:

Kairos (καιρός) is an Ancient Greek word meaning the right, critical or opportune moment.

This library offers an abstraction over the awesome chrono crate to calculate dates almost like one would write plain text:

use kairos::timetype::TimeType as TT;

// get the end of the month of the day 5 days ago
let _ = (TT::today() - TT::weeks(1) + TT::days(2)).end_of_month();

// alternative to above
let _ = (TT::today() - TT::days(5)).end_of_month();

// NOTE: The following features are not yet included

// get a vector of dates for the next 4 weeks, starting today
let _ = TT::today()
    .every(TT::week(1))
    .take(4);

// get an iterator of dates for the next year, in a weekly fashion, starting
// today but skipping october
let _ = TT::today()
    .every(TT::week(1))
    .skip(Month::October)
    .until(Mark::END_OF_YEAR);

// and finally, a complex one

let _ = (TT::today() - TT::years(1))       // exactly one year ago
  .every(Day::Monday)                      // and then every Monday
  .skip(Month::October)                    // but not in october
  .skip(|date| date.is(Mark::MONTH_START)) // and not if the day is the 1st of a month
  .until(Mark::Moment(today()));           // until today

Parsing User-Input

kairos ships a user input parser, so you can include kairos in your commandline applications.

Have a look at the example CLI utility or the language documentation.

License

MPL 2.0