def step(step_increment = 1)
@current_steps+= step_increment
new_markers = @max_steps != 0 ? (@current_steps / @steps_per_marker).to_i : max_markers
new_percentage = @max_steps != 0 ? @current_steps * 100 / @max_steps : 100
if @use_ansi and new_percentage != @current_percentage
print "\e[1D" * (@current_markers + 5) if @current_percentage != 0
print "#{new_percentage}%".rjust(4) << " "
print "\e[1C" * @current_markers if @current_markers != 0
$stdout.flush
@current_percentage = new_percentage
end
if new_markers > @current_markers
print '.' * (new_markers - @current_markers)
@current_markers = new_markers
$stdout.flush
end
if @current_steps == @max_steps
print '.' * (max_markers - @current_markers) + ' '
$stdout.flush
end
end