module Time::Elapsed::Parser

Constants

LAST_REGEX
TIME_TO_SECONDS

Public Class Methods

parse_time_str(time_str, last_regex = LAST_REGEX) click to toggle source

@param [String] time_str User string to parse @return [Fixnum] parsed time in seconds

# File lib/time/elapsed/parser/parser.rb, line 25
def self.parse_time_str(time_str, last_regex = LAST_REGEX)
  raise ArgumentError unless last_regex.is_a?(Regexp)
  keys = last_regex.names
  matches = time_str.gsub(/\s+/, '').scan(last_regex)
  ago_hash = matches.inject({}) do |h, m|
      m.map!(&:to_i) #Expect zeros
      match_hash = Hash[*keys.zip(m).flatten]
      h.merge(match_hash){|k, old_v, new_v| [old_v, new_v].max }
    end
  ago_hash.merge(TIME_TO_SECONDS) do |k, base, multiplier|
    base*multiplier
  end.values.inject(&:+)
end