Module: PredictabilityEngine::Duration

Defined in:
lib/predictability_engine/duration.rb

Constant Summary collapse

UNITS =
{ 'd' => 1, 'w' => 7, 'm' => 30 }.freeze

Class Method Summary collapse

Class Method Details

.parse(spec) ⇒ Object

Raises:

  • (ArgumentError)


7
8
9
10
11
12
13
14
# File 'lib/predictability_engine/duration.rb', line 7

def self.parse(spec)
  return nil if spec.nil?

  match = spec.to_s.strip.downcase.match(/\A(\d+)([dwm])\z/)
  raise ArgumentError, "Invalid duration #{spec.inspect} (expected e.g. 1w, 2m, 30d)" unless match

  match[1].to_i * UNITS.fetch(match[2])
end