use crate::words::{at, is_digit, sub};
pub(crate) fn digit_run(s: &[char], from: usize) -> usize {
let mut i = from;
while is_digit(at(s, i)) {
i += 1;
}
i - from
}
pub(crate) fn digits_value(s: &[char]) -> u32 {
s.iter().fold(0u32, |n, c| n.saturating_mul(10).saturating_add(c.to_digit(10).unwrap_or(0)))
}
pub(crate) fn two_digits_up_to_59(s: &[char], at_: usize) -> Option<u32> {
if !is_digit(at(s, at_)) || !is_digit(at(s, at_ + 1)) || is_digit(at(s, at_ + 2)) {
return None;
}
let n = digits_value(sub(s, at_, at_ + 2));
(n <= 59).then_some(n)
}