Sha256: e9389eed5a5e7ebcd5befaee3b4797e7c5716e6b170cda1f607874654eaf96bd

Contents?: true

Size: 1.94 KB

Versions: 12

Compression:

Stored size: 1.94 KB

Contents

class ProgressBar
  module Components
    class Bar
      include Progressable

      DEFAULT_PROGRESS_MARK                    = '='
      DEFAULT_REMAINDER_MARK                   = ' '
      DEFAULT_UNKNOWN_PROGRESS_ANIMATION_STEPS = ['=---', '-=--', '--=-', '---=']

      attr_accessor :progress_mark
      attr_accessor :remainder_mark
      attr_accessor :length
      attr_accessor :unknown_progress_animation_steps

      def initialize(options = {})
        super

        self.unknown_progress_animation_steps = options[:unknown_progress_animation_steps] || DEFAULT_UNKNOWN_PROGRESS_ANIMATION_STEPS
        self.progress_mark                    = options[:progress_mark]                    || DEFAULT_PROGRESS_MARK
        self.remainder_mark                   = options[:remainder_mark]                   || DEFAULT_REMAINDER_MARK
      end

      def to_s(options = {:format => :standard})
        completed_string = send(:"#{options[:format]}_complete_string")

        "#{completed_string}#{empty_string}"
      end

      def integrated_percentage_complete_string
        return standard_complete_string if completed_length < 5

        " #{percentage_completed} ".to_s.center(completed_length, progress_mark)
      end

      def standard_complete_string
        progress_mark * completed_length
      end

      def empty_string
        incomplete_length = (length - completed_length)

        if total.nil?
          current_animation_step = progress % unknown_progress_animation_steps.size
          animation_graphic      = unknown_progress_animation_steps[current_animation_step]

          unknown_incomplete_string = animation_graphic * ((incomplete_length / unknown_progress_animation_steps.size) + 2)

          unknown_incomplete_string[0, incomplete_length]
        else
          remainder_mark * incomplete_length
        end
      end

    private
      def completed_length
        (length * percentage_completed / 100).floor
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
rubyjobbuilderdsl-0.0.2 vendor/bundle/ruby/2.1.0/gems/ruby-progressbar-1.5.1/lib/ruby-progressbar/components/bar.rb
rubyjobbuilderdsl-0.0.1 vendor/bundle/ruby/2.1.0/gems/ruby-progressbar-1.5.1/lib/ruby-progressbar/components/bar.rb
ruby-progressbar-1.6.1 lib/ruby-progressbar/components/bar.rb
ruby-progressbar-1.6.0 lib/ruby-progressbar/components/bar.rb
ruby-progressbar-1.5.1 lib/ruby-progressbar/components/bar.rb
ruby-progressbar-1.5.0 lib/ruby-progressbar/components/bar.rb
ruby-progressbar-1.4.2 lib/ruby-progressbar/components/bar.rb
ruby-progressbar-1.4.1 lib/ruby-progressbar/components/bar.rb
ruby-progressbar-1.4.0 lib/ruby-progressbar/components/bar.rb
ruby-progressbar-1.3.2 lib/ruby-progressbar/components/bar.rb
ruby-progressbar-1.3.1 lib/ruby-progressbar/components/bar.rb
ruby-progressbar-1.3.0 lib/ruby-progressbar/components/bar.rb