wasm4pm-compat 26.6.13

Minimal paper-complete, feature-capped Rust process-evidence crate. Start with compatibility. Graduate to execution.
Documentation
//! Timestamp parsing helpers for log import.
//!
//! ## What this module IS
//!
//! - Pure functions that normalize external timestamp encodings into
//!   `chrono::DateTime<FixedOffset>` for typed event shapes.
//!
//! ## What this module is **NOT**
//!
//! - **Not** an engine. It parses strings to times; it never orders events,
//!   derives durations, or computes a temporal profile (that graduates).
//!
//! Structure only.

use chrono::{DateTime, FixedOffset, NaiveDateTime};

pub fn parse_timestamp<'a>(
    time: &'a str,
    custom_format: Option<&'a str>,
    _verbose: bool,
) -> Result<DateTime<FixedOffset>, &'a str> {
    if let Some(date_format) = custom_format {
        if let Ok(dt) = DateTime::parse_from_str(time, date_format) {
            return Ok(dt);
        }
        if let Ok(dt) = NaiveDateTime::parse_from_str(time, date_format) {
            return Ok(dt.and_utc().into());
        }
    }

    if let Ok(dt) = DateTime::parse_from_rfc3339(time) {
        return Ok(dt);
    }

    if let Ok(dt) = DateTime::parse_from_str(time, "%Y-%m-%dT%H:%M:%S%z") {
        return Ok(dt);
    }

    if let Ok(dt) = DateTime::parse_from_rfc2822(time) {
        return Ok(dt);
    }

    if let Ok(dt) = NaiveDateTime::parse_from_str(time, "%F %T%.f") {
        return Ok(dt.and_utc().into());
    }

    if let Ok(dt) = NaiveDateTime::parse_from_str(time, "%FT%T%.f") {
        return Ok(dt.and_utc().into());
    }

    if let Ok(dt) = NaiveDateTime::parse_from_str(time, "%FT%T") {
        return Ok(dt.and_utc().into());
    }

    if let Ok(dt) = NaiveDateTime::parse_from_str(time, "%F %T UTC") {
        return Ok(dt.and_utc().into());
    }

    if let Ok((dt, _)) = DateTime::parse_and_remainder(time, "%Z %b %d %Y %T GMT%z") {
        return Ok(dt);
    }

    Err("Unexpected timestamp format")
}