Module: YiffSpace::Utils::DurationParser

Defined in:
lib/yiffspace/utils/duration_parser.rb

Class Method Summary collapse

Class Method Details

.parse(string) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/yiffspace/utils/duration_parser.rb', line 8

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)

  raise(NotImplementedError) unless %w[seconds minutes hours days weeks months years].include?(unit)

  size.public_send(unit)
rescue # rubocop:disable Style/RescueStandardError
  raise(ArgumentError, "'#{string}' is not a valid duration")
end