merged branch robqu/patch-progressbar (PR #6266)
This PR was merged into the master branch. Commits -------ea74610
jumping progress bar fix for windows & unix6a0ee27
[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:
commit
8bbc64d3ec
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user