merged branch robqu/patch-progressbar (PR #6266)

This PR was merged into the master branch.

Commits
-------

ea74610 jumping progress bar fix for windows & unix
6a0ee27 [Console] fixed progress bar jumping

Discussion
----------

[Console] fixed progress bar jumping for windows & unix env

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -
License of the code: MIT
Documentation PR: -

---------------------------------------------------------------------------

by pborreli at 2012-12-11T13:58:25Z

Good implementation but could you please check http://symfony.com/doc/current/contributing/code/standards.html
This commit is contained in:
Fabien Potencier 2012-12-11 15:05:51 +01:00
commit 8bbc64d3ec
2 changed files with 20 additions and 13 deletions

View File

@ -36,6 +36,7 @@ class ProgressHelper extends Helper
private $format = null;
private $redrawFreq = 1;
private $lastMessagesLength;
private $barCharOriginal;
/**
@ -380,21 +381,17 @@ class ProgressHelper extends Helper
*
* @param OutputInterface $output An Output instance
* @param string|array $messages The message as an array of lines or a single string
* @param Boolean $newline Whether to add a newline or not
* @param integer $size The size of line
*/
private function overwrite(OutputInterface $output, $messages, $newline = false, $size = 80)
private function overwrite(OutputInterface $output, $messages)
{
$output->write(str_repeat("\x08", $size));
$output->write($messages);
$output->write(str_repeat(' ', $size - strlen($messages)));
// clean up the end line
$output->write(str_repeat("\x08", $size - strlen($messages)));
if ($newline) {
$output->writeln('');
$output->write("\x0D"); // carriage return
if($this->lastMessagesLength!==null){
$output->write(str_repeat("\x20", $this->lastMessagesLength)); //clear the line with the length of the last message
$output->write("\x0D"); // carriage return
}
$output->write($messages);
$this->lastMessagesLength=strlen($messages);
}
/**

View File

@ -79,8 +79,18 @@ class ProgressHelperTest extends \PHPUnit_Framework_TestCase
return new StreamOutput(fopen('php://memory', 'r+', false));
}
protected $lastMessagesLength;
protected function generateOutput($expected)
{
return str_repeat("\x08", 80).$expected.str_repeat(' ', 80 - strlen($expected)).str_repeat("\x08", 80 - strlen($expected));
$expectedout = $expected;
if($this->lastMessagesLength!==null){
$expectedout=str_repeat("\x20", $this->lastMessagesLength)."\x0D".$expected;
}
$this->lastMessagesLength=strlen($expected);
return "\x0D".$expectedout;
}
}