Skip to main content

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}