doing_time/lib.rs
1//! Natural-language time parsing and duration formatting for the doing CLI.
2//!
3//! This crate converts human-friendly time expressions into concrete
4//! `chrono::DateTime` and `chrono::Duration` values, and formats durations
5//! back into display strings.
6//!
7//! # Key entry points
8//!
9//! - [`chronify`] — parse expressions like `"yesterday 3pm"`, `"2 hours ago"`,
10//! or `"last monday"` into a `DateTime<Local>`.
11//! - [`parse_range`] — parse range expressions like `"monday to friday"` into
12//! a `(DateTime<Local>, DateTime<Local>)` tuple.
13//! - [`parse_duration`] — parse duration strings like `"1h30m"`, `"90"`, or
14//! `"1 hour 30 minutes"` into a `chrono::Duration`.
15//! - [`FormattedDuration`] — render a `Duration` in one of several display
16//! formats (clock, natural language, abbreviated, etc.).
17//! - [`FormattedShortdate`] — render a `DateTime` as a relative or absolute
18//! short date string.
19
20mod duration;
21pub mod format;
22pub mod parser;
23pub mod range;
24
25pub use duration::parse_duration;
26pub use format::{DurationFormat, FormattedDuration, FormattedShortdate, ShortdateFormatConfig, format_tag_total};
27pub use parser::chronify;
28pub use range::parse_range;