module RSpecTracer::TimeFormatter
Constants
- DEFAULT_PRECISION
- SECONDS_PRECISION
- UNITS
Public Instance Methods
format_duration(duration)
click to toggle source
# File lib/rspec_tracer/time_formatter.rb, line 33 def format_duration(duration) return 0 if duration.negative? precision = duration < 1 ? SECONDS_PRECISION : DEFAULT_PRECISION strip_trailing_zeroes(format("%<duration>0.#{precision}f", duration: duration)) end
format_time(seconds)
click to toggle source
# File lib/rspec_tracer/time_formatter.rb, line 17 def format_time(seconds) return pluralize(format_duration(seconds), 'second') if seconds < 60 formatted_duration = UNITS.each_pair.with_object([]) do |(unit, count), duration| next unless seconds.positive? seconds, remainder = seconds.divmod(count) next if remainder.zero? duration << pluralize(format_duration(remainder), unit) end formatted_duration.reverse.join(' ') end
pluralize(duration, unit)
click to toggle source
# File lib/rspec_tracer/time_formatter.rb, line 45 def pluralize(duration, unit) if (duration.to_f - 1).abs < Float::EPSILON "#{duration} #{unit}" else "#{duration} #{unit}s" end end
strip_trailing_zeroes(formatted_duration)
click to toggle source
# File lib/rspec_tracer/time_formatter.rb, line 41 def strip_trailing_zeroes(formatted_duration) formatted_duration.sub(/(?:(\..*[^0])0+|\.0+)$/, '\1') end