hyaenidae/toolkit/src/lib.rs

110 lines
3 KiB
Rust

include!(concat!(env!("OUT_DIR"), "/templates.rs"));
mod banner;
mod button;
mod card;
mod file_input;
mod icon;
mod image;
mod input;
mod link;
mod profile;
mod select;
mod text_input;
mod thumbnail;
mod tile;
pub use self::{
banner::Banner,
button::{Button, ButtonKind, LinkKind},
card::Card,
file_input::FileInput,
icon::Icon,
image::Image,
input::{Input, InputKind},
link::Link,
profile::Profile,
select::Select,
text_input::TextInput,
thumbnail::Thumbnail,
tile::{IndicatorColor, Tile, Tiles},
};
use chrono::{DateTime, Utc};
fn time_ago_long(time: DateTime<Utc>) -> String {
let duration = chrono::Utc::now() - time;
if let Some(years) =
duration
.num_days()
.checked_div(365)
.and_then(|years| if years > 0 { Some(years) } else { None })
{
if years == 1 {
format!("{} year ago", years)
} else {
format!("{} years ago", years)
}
} else if duration.num_weeks() > 0 {
if duration.num_weeks() == 1 {
format!("{} week ago", duration.num_weeks())
} else {
format!("{} weeks ago", duration.num_weeks())
}
} else if duration.num_days() > 0 {
if duration.num_days() == 1 {
format!("{} day ago", duration.num_days())
} else {
format!("{} days ago", duration.num_days())
}
} else if duration.num_hours() > 0 {
if duration.num_hours() == 1 {
format!("{} hour ago", duration.num_hours())
} else {
format!("{} hours ago", duration.num_hours())
}
} else if duration.num_minutes() > 0 {
if duration.num_minutes() == 1 {
format!("{} minute ago", duration.num_minutes())
} else {
format!("{} minutes ago", duration.num_minutes())
}
} else if duration.num_seconds() > 0 {
if duration.num_seconds() == 1 {
format!("{} second ago", duration.num_seconds())
} else {
format!("{} seconds ago", duration.num_seconds())
}
} else {
"now".to_owned()
}
}
fn time_ago_short(time: DateTime<Utc>) -> String {
let duration = chrono::Utc::now() - time;
if let Some(years) =
duration
.num_days()
.checked_div(365)
.and_then(|years| if years > 0 { Some(years) } else { None })
{
format!("{}y", years)
} else if duration.num_weeks() > 0 {
format!("{}w", duration.num_weeks())
} else if duration.num_days() > 0 {
format!("{}d", duration.num_days())
} else if duration.num_hours() > 0 {
format!("{}h", duration.num_hours())
} else if duration.num_minutes() > 0 {
format!("{}m", duration.num_minutes())
} else if duration.num_seconds() > 0 {
format!("{}s", duration.num_seconds())
} else {
"now".to_owned()
}
}
fn time(time: chrono::DateTime<chrono::Utc>) -> String {
time.format("%B %d, %Y, %I:%M %P").to_string()
}