use std::time::{SystemTime, UNIX_EPOCH}; use chrono::{Local, TimeDelta, TimeZone}; use log::debug; use crate::constants::{ DATE, REPLACEMENT_CHAPTER, REPLACEMENT_CHAPTER_SECTION, REPLACMENT_SECTION_TITLE, }; fn get_current_date() -> String { let start = SystemTime::now(); let seconds_since_epoch: TimeDelta = TimeDelta::from_std( start .duration_since(UNIX_EPOCH) .expect("Time went backwards"), ) .expect("Time does not go backwards"); debug!( "Adding a date with timestamp: {}", seconds_since_epoch.num_seconds() ); let our_date = format!( "{}", Local .timestamp_opt(seconds_since_epoch.num_seconds(), 0) // only has unwrap, no expect. But should always work .unwrap() .format("%Y-%m-%d %H:%M:%S%.f %:z") ); our_date } pub fn untemplatize_section(input: &str, new_section_name: &str, new_chapter_name: &str) -> String { input .replace(REPLACEMENT_CHAPTER_SECTION, &new_chapter_name) .replace(REPLACMENT_SECTION_TITLE, &new_section_name) .replace(DATE, &get_current_date()) } pub fn untemplatize_chapter(input: &str, new_chapter_name: &str) -> String { input .replace(REPLACEMENT_CHAPTER, &new_chapter_name) .replace(DATE, &get_current_date()) }