Sha256: 41df6c237bd86b3c1149dc4b0ab2bcac34d3d50dc0871cd61baa926e7e7b6672

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

require 'ruby-progressbar/time'

class ProgressBar
  module Components
    module Timer
      TIME_FORMAT = '%02d:%02d:%02d'

      def start
        @started_at = stopped? ? now - (@stopped_at - @started_at) : now
        @stopped_at = nil
      end

      def stop
        @stopped_at = now
      end

      def pause
        stop
      end

      def resume
        start
      end

      def started?
        !!@started_at
      end

      def stopped?
        !!@stopped_at
      end

      def reset
        @started_at = nil
        @stopped_at = nil
      end

    private
      def now
        ProgressBar::Time.now
      end

      def elapsed_seconds
        ((@stopped_at || now) - @started_at)
      end

      def elapsed_whole_seconds
        elapsed_seconds.floor
      end

      def elapsed_time
        return '--:--:--' unless started?

        hours, minutes, seconds = *divide_seconds(elapsed_whole_seconds)

        sprintf TIME_FORMAT, hours, minutes, seconds
      end

      def divide_seconds(seconds)
        hours, seconds = seconds.divmod(3600)
        minutes, seconds = seconds.divmod(60)

        [hours, minutes, seconds]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruby-progressbar-1.4.0 lib/ruby-progressbar/components/timer.rb