diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-06-09 15:40:27 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-06-09 15:45:16 +0200 |
| commit | 3bedf8d0d15682079978756918dab213ad7073ad (patch) | |
| tree | db45e013cc14b02316ca67fb0d212a8332e7b325 /library | |
| parent | 7ece53ae0c4df44c90dad9196b30a54edde55e94 (diff) | |
Translate TOML datetime properly
Diffstat (limited to 'library')
| -rw-r--r-- | library/src/compute/data.rs | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/library/src/compute/data.rs b/library/src/compute/data.rs index b236536d..1238c3c3 100644 --- a/library/src/compute/data.rs +++ b/library/src/compute/data.rs @@ -1,4 +1,5 @@ use typst::diag::{format_xml_like_error, FileError}; +use typst::eval::Datetime; use crate::prelude::*; @@ -268,8 +269,24 @@ fn convert_toml(value: toml::Value) -> Value { .map(|(key, value)| (key.into(), convert_toml(value))) .collect::<Dict>() .into_value(), - // TODO: Make it use native date/time object(s) once it is implemented. - toml::Value::Datetime(v) => v.to_string().into_value(), + toml::Value::Datetime(v) => match (v.date, v.time) { + (None, None) => Value::None, + (Some(date), None) => { + Datetime::from_ymd(date.year as i32, date.month, date.day).into_value() + } + (None, Some(time)) => { + Datetime::from_hms(time.hour, time.minute, time.second).into_value() + } + (Some(date), Some(time)) => Datetime::from_ymd_hms( + date.year as i32, + date.month, + date.day, + time.hour, + time.minute, + time.second, + ) + .into_value(), + }, } } |
