TemporalZ

with

Returns a new PlainDate with some fields replaced.

Parameters

#
self:PlainDate
PlainDate
fields:WithOptions
WithOptions

Source

Implementation

#
pub fn with(self: PlainDate, fields: WithOptions) !PlainDate {
    const partial_date = abi.c.PartialDate{
        .year = if (fields.year) |y| abi.toOption(abi.c.OptionI32, y) else .{ .is_ok = false },
        .month = if (fields.month) |m| abi.toOption(abi.c.OptionU8, m) else .{ .is_ok = false },
        .day = if (fields.day) |d| abi.toOption(abi.c.OptionU8, d) else .{ .is_ok = false },
        .month_code = if (fields.month_code) |mc| abi.toDiplomatStringView(mc) else .{ .data = null, .len = 0 },
        .era = if (fields.era) |e| abi.toDiplomatStringView(e) else .{ .data = null, .len = 0 },
        .era_year = if (fields.era_year) |ey| abi.toOption(abi.c.OptionI32, ey) else .{ .is_ok = false },
        .calendar = abi.c.AnyCalendarKind_Iso,
    };

    const overflow = abi.c.ArithmeticOverflow_option{
        .is_ok = true,
        .unnamed_0 = .{ .ok = abi.c.ArithmeticOverflow_Constrain },
    };

    return wrapPlainDate(abi.c.temporal_rs_PlainDate_with(
        self._inner,
        partial_date,
        overflow,
    ));
}