Sha256: 0e714eb5a8b235d40dcb6021c48c88255f69cf7017d36e00f1d7b2e38426f289
Contents?: true
Size: 1.2 KB
Versions: 2
Compression:
Stored size: 1.2 KB
Contents
require 'progress' class Progress class WithProgress include Enumerable attr_reader :enumerable, :title # initialize with object responding to each, title and optional length # if block is provided, it is passed to each def initialize(enumerable, title, length = nil, &block) @enumerable, @title, @length = enumerable, title, length each(&block) if block end # each object with progress def each enumerable, length = case when @length [@enumerable, @length] when !@enumerable.respond_to?(:length) || @enumerable.is_a?(String) || (defined?(StringIO) && @enumerable.is_a?(StringIO)) || (defined?(TempFile) && @enumerable.is_a?(TempFile)) elements = @enumerable.each.to_a [elements, elements.length] else [@enumerable, @enumerable.length] end Progress.start(@title, length) do enumerable.each do |object| Progress.step do yield object end end @enumerable end end # returns self but changes title def with_progress(title = nil, length = nil, &block) self.class.new(@enumerable, title, length || @length, &block) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
progress-2.4.0 | lib/progress/with_progress.rb |
progress-2.3.0 | lib/progress/with_progress.rb |