Files
danbooru/app/logical/duration_parser.rb
evazion a7dc05ce63 Enable frozen string literals.
Make all string literals immutable by default.
2021-12-14 21:33:27 -06:00

35 lines
697 B
Ruby

# frozen_string_literal: true
require 'abbrev'
module DurationParser
def self.parse(string)
abbrevs = Abbrev.abbrev(%w[seconds minutes hours days weeks months years])
raise unless string =~ /(.*?)([a-z]+)\z/i
size = Float($1)
unit = abbrevs.fetch($2.downcase)
case unit
when "seconds"
size.seconds
when "minutes"
size.minutes
when "hours"
size.hours
when "days"
size.days
when "weeks"
size.weeks
when "months"
size * (365.25.days / 12)
when "years"
size * (365.25.days)
else
raise NotImplementedError
end
rescue
raise ArgumentError, "'#{string}' is not a valid duration"
end
end