parse static method
Parses a 'time ago' string (e.g., "5 minutes ago") into TimeAgoDuration.
Handles "justnow", is case-insensitive. Returns null if parsing fails.
Implementation
static TimeAgoDuration? parse(String input) {
if (input.trim().toLowerCase() == TimeUnit.justnow.name) {
return TimeAgoDuration(0, TimeUnit.justnow);
}
final prepared = _prepare(input);
if (prepared != null) {
final (valueInput, unitInput) = prepared;
TimeUnit timeUnit = switch (unitInput) {
'millisecond' || 'milliseconds' => TimeUnit.milliseconds,
'second' || 'seconds' => TimeUnit.seconds,
'minute' || 'minutes' => TimeUnit.minutes,
'hour' || 'hours' => TimeUnit.hours,
'day' || 'days' => TimeUnit.days,
'week' || 'weeks' => TimeUnit.weeks,
'month' || 'months' => TimeUnit.months,
'year' || 'years' => TimeUnit.years,
'jastnow' => TimeUnit.justnow,
_ => TimeUnit.unknown
};
return TimeAgoDuration(valueInput, timeUnit);
}
return null;
}