typst_pack/domain.rs
1//! Shared compilation and creation domain vocabulary.
2
3use typst::foundations::Datetime;
4
5/// The Typst document model selected for creation or compilation.
6#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
7pub enum TypstTarget {
8 /// A paged document used by PDF and image formats.
9 Paged,
10 /// An HTML document.
11 Html,
12}
13
14/// The exact or explicitly absent time used by Typst document-time requests.
15#[derive(Debug, Clone, Copy, PartialEq, Hash)]
16pub enum DocumentTime {
17 /// Document-time requests have no value.
18 Absent,
19 /// Return one fixed Typst date or datetime.
20 Fixed(Datetime),
21 /// Resolve one fixed UTC instant under each requested timezone offset.
22 UnixTimestamp(i64),
23}
24
25impl DocumentTime {
26 pub(crate) fn identity_projection(self) -> (Option<Datetime>, Option<i64>) {
27 match self {
28 Self::Absent => (None, None),
29 Self::Fixed(datetime) => (Some(datetime), None),
30 Self::UnixTimestamp(timestamp) => (None, Some(timestamp)),
31 }
32 }
33}