From 6a0ee27de1b11c16cb93a6e87d18d3b9afd618ba Mon Sep 17 00:00:00 2001 From: Thomas Adam Date: Wed, 17 Oct 2012 09:31:31 +0200 Subject: [PATCH] [Console] fixed progress bar jumping --- .../Component/Console/Helper/ProgressHelper.php | 15 +++------------ .../Console/Tests/Helper/ProgressHelperTest.php | 2 +- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/Symfony/Component/Console/Helper/ProgressHelper.php b/src/Symfony/Component/Console/Helper/ProgressHelper.php index ed0ccab140..e2db53bc5f 100644 --- a/src/Symfony/Component/Console/Helper/ProgressHelper.php +++ b/src/Symfony/Component/Console/Helper/ProgressHelper.php @@ -380,21 +380,12 @@ 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("\x0D"); // carriage return + $output->write("\x1B\x5B\x4B"); // clear line $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(''); - } } /** diff --git a/src/Symfony/Component/Console/Tests/Helper/ProgressHelperTest.php b/src/Symfony/Component/Console/Tests/Helper/ProgressHelperTest.php index 8f96e90e4e..8eafb57f79 100644 --- a/src/Symfony/Component/Console/Tests/Helper/ProgressHelperTest.php +++ b/src/Symfony/Component/Console/Tests/Helper/ProgressHelperTest.php @@ -82,6 +82,6 @@ class ProgressHelperTest extends \PHPUnit_Framework_TestCase protected function generateOutput($expected) { - return str_repeat("\x08", 80).$expected.str_repeat(' ', 80 - strlen($expected)).str_repeat("\x08", 80 - strlen($expected)); + return "\x0D\x1B\x5B\x4B".$expected; } }