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