Sha256: f18daf82da9bc5793c0d61d3080937849c4bc886aba448667b4b2209db235c0a

Contents?: true

Size: 1.41 KB

Versions: 2

Compression:

Stored size: 1.41 KB

Contents

# coding: utf-8

module TTY
  class ProgressBar
    # Responsible for converting values to different formats
    #
    # @api public
    class Converter
      HOURSECONDS = 3600

      # Convert seconds to time notation
      #
      # @param [Numeric] seconds
      #   the seconds to convert to time
      #
      # @api public
      def to_time(seconds)
        hours = (seconds / HOURSECONDS.to_f).floor
        seconds -= hours * HOURSECONDS
        minutes = (seconds / 60).floor
        seconds -= minutes * 60

        if hours > 99
          sprintf('%dh', hours)
        elsif hours > 0
          sprintf('%2dh%2dm', hours, minutes)
        elsif minutes > 0
          sprintf('%2dm%2ds', minutes, seconds)
        else
          sprintf('%2ds', seconds)
        end
      end

      KILOBYTE = 1024
      MEGABYTE = KILOBYTE * 1024
      GIGABYTE = MEGABYTE * 1024

      # Convert value to bytes
      #
      # @param [Numeric] value
      #   the value to convert to bytes
      #
      # @return [String]
      #
      # @api public
      def to_bytes(value)
        if value >= GIGABYTE
          sprintf('%.2f', value / GIGABYTE.to_f) + 'GB'
        elsif value >= MEGABYTE
          sprintf('%.2f', value / MEGABYTE.to_f) + 'MB'
        elsif value >= KILOBYTE
          sprintf('%.2f', value / KILOBYTE.to_f) + 'KB'
        else
          value.to_s + 'B'
        end
      end
    end # Converter
  end # ProgressBar
end # TTY

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tty-progressbar-0.4.0 lib/tty/progressbar/converter.rb
tty-progressbar-0.3.0 lib/tty/progressbar/converter.rb