diff options
| author | Samantaz Fox <coding@samantaz.fr> | 2023-05-29 12:41:53 +0200 |
|---|---|---|
| committer | Samantaz Fox <coding@samantaz.fr> | 2023-05-29 12:41:53 +0200 |
| commit | 898066407d85a2844c87fa6fc0e8179977cabb9c (patch) | |
| tree | cbe63896dab38afb33598e28d93f2cf51709362b /src | |
| parent | 381a0e326d413daba1418bfca820bbfe2b7829a3 (diff) | |
| download | invidious-898066407d85a2844c87fa6fc0e8179977cabb9c.tar.gz invidious-898066407d85a2844c87fa6fc0e8179977cabb9c.tar.bz2 invidious-898066407d85a2844c87fa6fc0e8179977cabb9c.zip | |
Utils: Update 'decode_date' to take into account short "x ago" forms
Diffstat (limited to 'src')
| -rw-r--r-- | src/invidious/helpers/utils.cr | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/invidious/helpers/utils.cr b/src/invidious/helpers/utils.cr index bcf7c963..48bf769f 100644 --- a/src/invidious/helpers/utils.cr +++ b/src/invidious/helpers/utils.cr @@ -111,24 +111,27 @@ def decode_date(string : String) else nil # Continue end - # String matches format "20 hours ago", "4 months ago"... - date = string.split(" ")[-3, 3] - delta = date[0].to_i + # String matches format "20 hours ago", "4 months ago", "20s ago", "15min ago"... + match = string.match(/(?<count>\d+) ?(?<span>[smhdwy]\w*) ago/) - case date[1] - when .includes? "second" + raise "Could not parse #{string}" if match.nil? + + delta = match["count"].to_i + + case match["span"] + when .starts_with? "s" # second(s) delta = delta.seconds - when .includes? "minute" + when .starts_with? "mi" # minute(s) delta = delta.minutes - when .includes? "hour" + when .starts_with? "h" # hour(s) delta = delta.hours - when .includes? "day" + when .starts_with? "d" # day(s) delta = delta.days - when .includes? "week" + when .starts_with? "w" # week(s) delta = delta.weeks - when .includes? "month" + when .starts_with? "mo" # month(s) delta = delta.months - when .includes? "year" + when .starts_with? "y" # year(s) delta = delta.years else raise "Could not parse #{string}" |
