let int = || map_res(recognize(many1(one_of("0123456789"))), i64::from_str);
let seconds = map(int(), |secs| secs * 1000);
let minutes_seconds = map(
- tuple((
- int(),
- tag(":"),
- map_res(recognize(one_of("012345")), i64::from_str),
- map_res(recognize(one_of("0123456789")), i64::from_str)
- )),
- |(mins, _, tens, secs)| (mins * 60 + tens * 10 + secs) * 1000
+ tuple((int(), tag(":"), map_res(recognize(one_of("012345")), i64::from_str), map_res(recognize(one_of("0123456789")), i64::from_str))),
+ |(mins, _, tens, secs)| (mins * 60 + tens * 10 + secs) * 1000,
);
let hours_minutes_seconds = map(
tuple((
map_res(recognize(one_of("0123456789")), i64::from_str),
tag(":"),
map_res(recognize(one_of("012345")), i64::from_str),
- map_res(recognize(one_of("0123456789")), i64::from_str)
+ map_res(recognize(one_of("0123456789")), i64::from_str),
)),
- |(hours, _, tenmins, mins, _, tens, secs)| (hours * 60 * 60 + tenmins * 10 * 60 + mins * 60 + tens * 10 + secs) * 1000
+ |(hours, _, tenmins, mins, _, tens, secs)| (hours * 60 * 60 + tenmins * 10 * 60 + mins * 60 + tens * 10 + secs) * 1000,
);
alt((hours_minutes_seconds, minutes_seconds, seconds))(input)
}
mod tests {
use super::*;
- use serde::Deserialize;
use serde::de::value::{Error, I64Deserializer};
+ use serde::Deserialize;
fn now() -> Timestamp {
Timestamp::deserialize(I64Deserializer::<Error>::new(1685204312000)).unwrap()