submilli-engine 0.3.0

Compiles Submilli programs, a TypeScript subset, to WebAssembly and runs them under capability policy
Documentation
//! `Temporal.PlainMonthDay` operations.

mod install;

pub(super) use install::{declare, install};

type Result<T> = std::result::Result<T, String>;

pub(super) fn parse(input: &str) -> Result<(i32, i32)> {
    let input = input.trim();
    let bad = || format!("Temporal.PlainMonthDay.from: expected `MM-DD`, got {input:?}");
    let body = input.strip_prefix("--").unwrap_or(input);
    let (month, day) = body.split_once('-').ok_or_else(bad)?;
    let month: i32 = month.parse().map_err(|_| bad())?;
    let day: i32 = day.parse().map_err(|_| bad())?;
    super::shared::y_m_d_date(2000, i64::from(month), i64::from(day), "PlainMonthDay.from")
        .map_err(|err| err.to_string())?;
    Ok((month, day))
}

pub(super) fn to_string(month: i32, day: i32) -> String {
    format!("{month:02}-{day:02}")
}

pub(super) fn equals(a: (i32, i32), b: (i32, i32)) -> bool {
    a == b
}