typst-pack 0.5.0

Portable single-file packs of Typst projects: sources, resources, packages, and fonts
Documentation
//! Shared compilation and creation domain vocabulary.

use typst::foundations::Datetime;

/// The Typst document model selected for creation or compilation.
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum TypstTarget {
    /// A paged document used by PDF and image formats.
    Paged,
    /// An HTML document.
    Html,
}

/// The exact or explicitly absent time used by Typst document-time requests.
#[derive(Debug, Clone, Copy, PartialEq, Hash)]
pub enum DocumentTime {
    /// Document-time requests have no value.
    Absent,
    /// Return one fixed Typst date or datetime.
    Fixed(Datetime),
    /// Resolve one fixed UTC instant under each requested timezone offset.
    UnixTimestamp(i64),
}

impl DocumentTime {
    pub(crate) fn identity_projection(self) -> (Option<Datetime>, Option<i64>) {
        match self {
            Self::Absent => (None, None),
            Self::Fixed(datetime) => (Some(datetime), None),
            Self::UnixTimestamp(timestamp) => (None, Some(timestamp)),
        }
    }
}