lib/vidibus/helpers/extensions/view.rb in vidibus-helpers-0.0.0 vs lib/vidibus/helpers/extensions/view.rb in vidibus-helpers-0.0.1

- old
+ new

@@ -14,9 +14,33 @@ # Returns next number for tab order. def autotab @autotab ||= 0 @autotab += 1 end + + # Formats a number or float as human duration. + # + # Examples: + # + # number_to_duration(24.5) # => "00:25" + # number_to_duration(24.5, :hours => true) # => "00:00:25" + # number_to_duration(3654) # => "01:00:54" + # number_to_duration(3654, :hours => false) # => "60:54" + # + def number_to_duration(seconds, options = {}) + hours = options[:hours] + seconds = seconds.round + hour = (seconds / 3600).floor unless hours == false + min = (seconds / 60).floor + sec = (seconds % 60).round + if hours != false and (hours == true or hour > 0) + min -= hour * 60 + output = "%02d:" % hour + else + output = '' + end + output + "%02d:%02d" % [ min, sec ] + end end end end end