module RSpec::Core::Formatters::Helpers

def format_duration(duration)

Returns:
  • (String) - human-readable time

Parameters:
  • duration (Float, Fixnum) -- in seconds

Other tags:
    Api: - private
def format_duration(duration)
  precision = case
              when duration < 1;    SUB_SECOND_PRECISION
              when duration < 120;  DEFAULT_PRECISION
              when duration < 300;  1
              else                  0
              end
  if duration > 60
    minutes = (duration.to_i / 60).to_i
    seconds = duration - minutes * 60
    "#{pluralize(minutes, 'minute')} #{pluralize(format_seconds(seconds, precision), 'second')}"
  else
    pluralize(format_seconds(duration, precision), 'second')
  end
end

def format_seconds(float, precision = nil)

Other tags:
    See: #strip_trailing_zeroes -

Returns:
  • (String) - formatted float

Parameters:
  • float (Float) --

Other tags:
    Api: - private
def format_seconds(float, precision = nil)
  precision ||= (float < 1) ? SUB_SECOND_PRECISION : DEFAULT_PRECISION
  formatted = sprintf("%.#{precision}f", float)
  strip_trailing_zeroes(formatted)
end

def pluralize(count, string)

Returns:
  • (String) - pluralized word

Parameters:
  • string (String) -- word to be pluralized
  • count (Fixnum) -- number of objects

Other tags:
    Api: - private
def pluralize(count, string)
  "#{count} #{string}#{'s' unless count.to_f == 1}"
end

def strip_trailing_zeroes(string)

Returns:
  • (String) - string with trailing zeros removed

Parameters:
  • string (String) -- string with trailing zeros

Other tags:
    Api: - private
def strip_trailing_zeroes(string)
  stripped = string.sub(/[^1-9]+$/, '')
  stripped.empty? ? "0" : stripped
end