Handlebars - show time of generation



examples/handlebars/handlebars-date/src/main.rs
use chrono::{DateTime, Utc};
use handlebars::Handlebars;
use serde_json::json;
use std::error::Error;
use std::fs::File;
use std::io::Read;
use std::io::Write;

fn main() {
    let filename = "hello.html";
    let template = "template.html";
    match render_without_register(template, filename) {
        Ok(_) => println!(),
        Err(_) => println!("error"),
    }
}

fn render_without_register(template_file: &str, filename: &str) -> Result<(), Box<dyn Error>> {
    let template = read_template(template_file);

    let utc: DateTime<Utc> = Utc::now();

    let reg = Handlebars::new();
    let html = reg.render_template(&template, &json!({"utc": format!("{}", utc)}))?;
    let mut file = File::create(filename).unwrap();
    writeln!(&mut file, "{}", html).unwrap();

    Ok(())
}

fn read_template(template_file: &str) -> String {
    let mut template = String::new();
    match File::open(template_file) {
        Ok(mut file) => {
            file.read_to_string(&mut template).unwrap();
        }
        Err(error) => {
            println!("Error opening file {}: {}", template_file, error);
        }
    }
    template
}

examples/handlebars/handlebars-date/template.html
Hello. This page was generated at {{utc}}.

examples/handlebars/handlebars-date/hello.html
Hello. This page was generated at 2023-10-08 12:17:47.976870543 UTC.

examples/handlebars/handlebars-date/Cargo.toml
[package]
name = "handlebars-quick"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
handlebars = "4.3.7"
serde_json = "1.0.97"
chrono = "0.4.26"