Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
0.00% |
0 / 17 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 1 |
| html_output_formatter | |
0.00% |
0 / 17 |
|
0.00% |
0 / 2 |
72 | |
0.00% |
0 / 1 |
| format | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
| formatHtml | |
0.00% |
0 / 15 |
|
0.00% |
0 / 1 |
56 | |||
| 1 | <?php |
| 2 | /** |
| 3 | * |
| 4 | * This file is part of the phpBB Forum Software package. |
| 5 | * |
| 6 | * @copyright (c) phpBB Limited <https://www.phpbb.com> |
| 7 | * @license GNU General Public License, version 2 (GPL-2.0) |
| 8 | * |
| 9 | * For full copyright and license information, please see |
| 10 | * the docs/CREDITS.txt file. |
| 11 | * |
| 12 | */ |
| 13 | |
| 14 | namespace phpbb\composer\io; |
| 15 | |
| 16 | class html_output_formatter extends \Composer\Console\HtmlOutputFormatter |
| 17 | { |
| 18 | protected static $availableForegroundColors = [ |
| 19 | 30 => 'black', |
| 20 | 31 => 'red', |
| 21 | 32 => 'green', |
| 22 | 33 => 'orange', |
| 23 | 34 => 'blue', |
| 24 | 35 => 'magenta', |
| 25 | 36 => 'cyan', |
| 26 | 37 => 'white', |
| 27 | ]; |
| 28 | |
| 29 | protected static $availableBackgroundColors = [ |
| 30 | 40 => 'black', |
| 31 | 41 => 'red', |
| 32 | 42 => 'green', |
| 33 | 43 => 'yellow', |
| 34 | 44 => 'blue', |
| 35 | 45 => 'magenta', |
| 36 | 46 => 'cyan', |
| 37 | 47 => 'white', |
| 38 | ]; |
| 39 | |
| 40 | protected static $availableOptions |
| 41 | = [ |
| 42 | 1 => 'bold', |
| 43 | 4 => 'underscore', |
| 44 | ]; |
| 45 | |
| 46 | /** |
| 47 | * {@inheritdoc} |
| 48 | */ |
| 49 | public function format(string|null $message): string|null |
| 50 | { |
| 51 | $formatted = parent::format($message); |
| 52 | |
| 53 | return preg_replace_callback("{[\033\e]\[([0-9;]+)m(.*?)[\033\e]\[[0-9;]+m}s", [$this, 'formatHtml'], $formatted); |
| 54 | } |
| 55 | |
| 56 | protected function formatHtml($matches) |
| 57 | { |
| 58 | $out = '<span style="'; |
| 59 | foreach (explode(';', $matches[1]) as $code) |
| 60 | { |
| 61 | if (isset(self::$availableForegroundColors[$code])) |
| 62 | { |
| 63 | $out .= 'color:' . self::$availableForegroundColors[$code] . ';'; |
| 64 | } |
| 65 | else if (isset(self::$availableBackgroundColors[$code])) |
| 66 | { |
| 67 | $out .= 'background-color:' . self::$availableBackgroundColors[$code] . ';'; |
| 68 | } |
| 69 | else if (isset(self::$availableOptions[$code])) |
| 70 | { |
| 71 | switch (self::$availableOptions[$code]) |
| 72 | { |
| 73 | case 'bold': |
| 74 | $out .= 'font-weight:bold;'; |
| 75 | break; |
| 76 | |
| 77 | case 'underscore': |
| 78 | $out .= 'text-decoration:underline;'; |
| 79 | break; |
| 80 | } |
| 81 | } |
| 82 | } |
| 83 | |
| 84 | return $out . '">' . $matches[2] . '</span>'; |
| 85 | } |
| 86 | } |