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 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, tile::Tile, }; use chrono::{DateTime, Utc}; fn time_ago_long(time: DateTime) -> 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) -> 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) -> String { time.format("%B %d, %Y, %I:%M %P").to_string() }