File tree Expand file tree Collapse file tree 4 files changed +40
-25
lines changed
spec/lib/ruby-progressbar/refinements Expand file tree Collapse file tree 4 files changed +40
-25
lines changed Original file line number Diff line number Diff line change 1- require 'ruby-progressbar/refinements/enumerator '
1+ require 'ruby-progressbar/refinements/progress_enumerator '
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1+ class ProgressBar
2+ module Refinements
3+ module Enumerator
4+ ARITY_ERROR_MESSAGE = 'Only two arguments allowed to be passed to ' \
5+ 'with_progressbar (item, progress_bar)' . freeze
6+
7+ refine ::Enumerator do
8+ def with_progressbar ( options = { } , &block )
9+ progress_bar = ProgressBar . create ( options . merge ( :starting_at => 0 , :total => size ) )
10+
11+ each do |item |
12+ progress_bar . increment
13+
14+ next unless block
15+
16+ yielded_args = [ ]
17+ yielded_args << item if block . arity > 0
18+ yielded_args << progress_bar if block . arity > 1
19+
20+ fail ::ArgumentError , ARITY_ERROR_MESSAGE if block . arity > 2
21+
22+ yield ( *yielded_args )
23+ end
24+ end
25+ end
26+ end
27+ end
28+ end
Original file line number Diff line number Diff line change 11if Module . private_instance_methods . include? ( :using )
22
33require 'spec_helper'
4- require 'ruby-progressbar/refinements/enumerator '
4+ require 'ruby-progressbar/refinements/progress_enumerator '
55
66class ProgressBar
77module Refinements
@@ -84,6 +84,16 @@ module Refinements
8484
8585 expect ( enumerator . map ( &transform ) ) . to eql ( ( 0 ...10 ) . map ( &transform ) )
8686 end
87+
88+ it 'passes the progressbar instance to the block when two arguments are requested for the block' do
89+ progress = 0
90+ current_item = -1
91+
92+ ( 0 ...10 ) . each . with_progressbar do |item , progress_bar |
93+ expect ( progress_bar . progress ) . to be ( progress += 1 )
94+ expect ( item ) . to be ( current_item += 1 )
95+ end
96+ end
8797end
8898end
8999end
You can’t perform that action at this time.
0 commit comments