Browse Source

Support bg colors and more clearing values in html output formatter

Jordi Boggiano 9 years ago
parent
commit
89540c5690

+ 2 - 1
src/Composer/Console/HtmlOutputFormatter.php

@@ -59,7 +59,8 @@ class HtmlOutputFormatter extends OutputFormatter
     {
         $formatted = parent::format($message);
 
-        return preg_replace_callback("{\033\[([0-9;]+)m(.*?)\033\[(?:39|49|0|22|24|25|27|28)m}s", array($this, 'formatHtml'), $formatted);
+        $clearEscapeCodes = '(?:39|49|0|22|24|25|27|28)';
+        return preg_replace_callback("{\033\[([0-9;]+)m(.*?)\033\[(?:".$clearEscapeCodes.";)*?".$clearEscapeCodes."m}s", array($this, 'formatHtml'), $formatted);
     }
 
     private function formatHtml($matches)

+ 6 - 3
tests/Composer/Test/Console/HtmlOutputFormatterTest.php

@@ -13,16 +13,19 @@
 namespace Composer;
 
 use Composer\Console\HtmlOutputFormatter;
+use Symfony\Component\Console\Formatter\OutputFormatterStyle;
 
 class HtmlOutputFormatterTest extends \PHPUnit_Framework_TestCase
 {
     public function testFormatting()
     {
-        $formatter = new HtmlOutputFormatter;
+        $formatter = new HtmlOutputFormatter(array(
+            'warning' => new OutputFormatterStyle('black', 'yellow'),
+        ));
 
         return $this->assertEquals(
-            'Reading composer.json of <span style="color:green;">https://github.com/ccqgithub/sherry-php</span> (<span style="color:yellow;">master</span>)',
-            $formatter->format('Reading composer.json of <info>https://github.com/ccqgithub/sherry-php</info> (<comment>master</comment>)')
+            'text <span style="color:green;">green</span> <span style="color:yellow;">yellow</span> <span style="color:black;background-color:yellow;">black w/ yello bg</span>',
+            $formatter->format('text <info>green</info> <comment>yellow</comment> <warning>black w/ yello bg</warning>')
         );
     }
 }