3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/timer/time_parser.rb', line 3
def self.parse_duration(duration)
return nil if duration.nil?
total = 0
hours = []
mins = []
secs = []
if duration.respond_to?(:split)
time_chunks = duration.split(" ")
else
time_chunks = duration
end
time_chunks.reject! { |c| c !~ /\d+(\.\d+)?[mhs]$/ }
hours += time_chunks.select {|c| c[-1,1] == "h" }
mins += time_chunks.select {|c| c[-1,1] == "m" }
secs += time_chunks.select {|c| c[-1,1] == "s" }
total += hours.inject(0) { |sum, x| sum + (x.to_f * 3600) }
total += mins.inject(0) { |sum, x| sum + (x.to_f * 60) }
total += secs.inject(0) { |sum, x| sum + x.to_f }
total unless total == 0
end
|