Module: RSpec::Core::Formatters::Helpers

Defined in:
lib/rspec/core/formatters/helpers.rb

Overview

Formatters helpers

Constant Summary

Class Method Summary (collapse)

Class Method Details

+ (String) format_duration(duration)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Formats seconds into a human-readable string.

Examples:

format_duration(1) #=>  "1 minute 1 second"
format_duration(135.14) #=> "2 minutes 15.14 seconds"

Parameters:

  • duration (Float, Fixnum)

    in seconds

Returns:

  • (String)

    human-readable time



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/rspec/core/formatters/helpers.rb', line 23

def self.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

+ (String) format_seconds(float, precision = nil)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Formats seconds to have 5 digits of precision with trailing zeros removed if the number is less than 1 or with 2 digits of precision if the number is greater than zero.

The precision used is set in SUB_SECOND_PRECISION and DEFAULT_PRECISION.

Examples:

format_seconds(0.000006) #=> "0.00001"
format_seconds(0.020000) #=> "0.02"
format_seconds(1.00000000001) #=> "1"

Parameters:

  • float (Float)

Returns:

  • (String)

    formatted float

See Also:

  • #strip_trailing_zeroes


57
58
59
60
61
# File 'lib/rspec/core/formatters/helpers.rb', line 57

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

+ (String) pluralize(count, string)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Pluralize a word based on a count.

Parameters:

  • count (Fixnum)

    number of objects

  • string (String)

    word to be pluralized

Returns:

  • (String)

    pluralized word



82
83
84
# File 'lib/rspec/core/formatters/helpers.rb', line 82

def self.pluralize(count, string)
  "#{count} #{string}#{'s' unless count.to_f == 1}"
end