summaryrefslogtreecommitdiff
path: root/library/src/compute
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-06-09 15:40:27 +0200
committerLaurenz <laurmaedje@gmail.com>2023-06-09 15:45:16 +0200
commit3bedf8d0d15682079978756918dab213ad7073ad (patch)
treedb45e013cc14b02316ca67fb0d212a8332e7b325 /library/src/compute
parent7ece53ae0c4df44c90dad9196b30a54edde55e94 (diff)
Translate TOML datetime properly
Diffstat (limited to 'library/src/compute')
-rw-r--r--library/src/compute/data.rs21
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(),
+ },
}
}