parse static method

TimeAgoDuration? parse(
  1. String input
)

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;
}