opening-hours-syntax 1.3.0

A parser for opening_hours fields in OpenStreetMap.
Documentation
use core::fmt::Display;

pub(crate) fn write_days_offset(
    f: &mut core::fmt::Formatter<'_>,
    offset: i64,
) -> core::fmt::Result {
    if offset == 0 {
        return Ok(());
    }

    write!(f, " ")?;

    if offset > 0 {
        write!(f, "+")?;
    }

    write!(f, "{offset} day")?;

    if offset.abs() > 1 {
        write!(f, "s")?;
    }

    Ok(())
}

pub(crate) fn write_selector(
    f: &mut core::fmt::Formatter<'_>,
    seq: &[impl Display],
) -> core::fmt::Result {
    let Some(first) = seq.first() else {
        return Ok(());
    };

    write!(f, "{first}")?;

    for elem in &seq[1..] {
        write!(f, ",{elem}")?;
    }

    Ok(())
}