module RSpec::Core::Formatters::Helpers

def self.format_duration(duration)

Returns:
  • (String) - human-readable time

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

Other tags:
    Api: - private
def self.format_duration(duration)
  precision = case
              when duration < 1 then    SUB_SECOND_PRECISION
              when duration < 120 then  DEFAULT_PRECISION
              when duration < 300 then  1
              else                  0
              end
  if duration > 60
    minutes = (duration.round / 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 self.format_seconds(float, precision=nil)

Other tags:
    See: #strip_trailing_zeroes -

Returns:
  • (String) - formatted float

Parameters:
  • float (Float) --

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

def self.organize_ids(ids)

Other tags:
    Api: - private
def self.organize_ids(ids)
  grouped = ids.inject(Hash.new { |h, k| h[k] = [] }) do |hash, id|
    file, id = Example.parse_id(id)
    hash[file] << id
    hash
  end
  grouped.sort_by(&:first).map do |file, grouped_ids|
    grouped_ids = grouped_ids.sort_by { |id| id.split(':').map(&:to_i) }
    id = Metadata.id_from(:rerun_file_path => file, :scoped_id => grouped_ids.join(','))
    ShellEscape.conditionally_quote(id)
  end
end

def self.pluralize(count, string)

Returns:
  • (String) - pluralized word

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

Other tags:
    Api: - private
def self.pluralize(count, string)
  pluralized_string = if count.to_f == 1
                        string
                      elsif string.end_with?('s') # e.g. "process"
                        "#{string}es" # e.g. "processes"
                      else
                        "#{string}s"
                      end
  "#{count} #{pluralized_string}"
end

def self.strip_trailing_zeroes(string)

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

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

Other tags:
    Api: - private
def self.strip_trailing_zeroes(string)
  string.sub(/(?:(\..*[^0])0+|\.0+)$/, '\1')
end