vegafusion_runtime/task_graph/
timezone.rs1use std::str::FromStr;
2use vegafusion_core::error::Result;
3use vegafusion_core::error::ResultWithContext;
4
5#[derive(Copy, Clone, Debug)]
6pub struct RuntimeTzConfig {
7 pub local_tz: chrono_tz::Tz,
8 pub default_input_tz: chrono_tz::Tz,
9}
10
11impl RuntimeTzConfig {
12 pub fn try_new(local_tz: &str, default_input_tz: &Option<String>) -> Result<Self> {
13 let local_tz = chrono_tz::Tz::from_str(local_tz)
14 .ok()
15 .with_context(|| format!("Failed to parse {local_tz} as timezone"))?;
16 let default_input_tz = default_input_tz
17 .clone()
18 .unwrap_or_else(|| local_tz.to_string());
19 let default_input_tz = chrono_tz::Tz::from_str(&default_input_tz)
20 .ok()
21 .with_context(|| format!("Failed to parse {default_input_tz} as timezone"))?;
22 Ok(Self {
23 local_tz,
24 default_input_tz,
25 })
26 }
27}