|
|
|
<?php
|
|
|
|
/*
|
|
|
|
* This file is part of the Magallanes package.
|
|
|
|
*
|
|
|
|
* (c) Andrés Montañez <andres@andresmontanez.com>
|
|
|
|
*
|
|
|
|
* For the full copyright and license information, please view the LICENSE
|
|
|
|
* file that was distributed with this source code.
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace Mage\Console;
|
|
|
|
|
|
|
|
use Mage\Config;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Parses the different colors available for the Terminal or Console.
|
|
|
|
*
|
|
|
|
* @author Andrés Montañez <andres@andresmontanez.com>
|
|
|
|
*/
|
|
|
|
class Colors
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* List of Colors and they Terminal/Console representation.
|
|
|
|
* @var array
|
|
|
|
*/
|
|
|
|
private static $foregroundColors = array(
|
|
|
|
'black' => '0;30',
|
|
|
|
'dark_gray' => '1;30',
|
|
|
|
'blue' => '0;34',
|
|
|
|
'light_blue' => '1;34',
|
|
|
|
'green' => '0;32',
|
|
|
|
'light_green' => '1;32',
|
|
|
|
'cyan' => '0;36',
|
|
|
|
'light_cyan' => '1;36',
|
|
|
|
'red' => '0;31',
|
|
|
|
'light_red' => '1;31',
|
|
|
|
'purple' => '0;35',
|
|
|
|
'light_purple' => '1;35',
|
|
|
|
'brown' => '0;33',
|
|
|
|
'yellow' => '1;33',
|
|
|
|
'light_gray' => '0;37',
|
|
|
|
'white' => '1;37'
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Parses a Text to represent Colors in the Terminal/Console.
|
|
|
|
*
|
|
|
|
* @param string $string
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public static function color($string, Config $config)
|
|
|
|
{
|
|
|
|
$disabled = $config->getParameter('no-color', !$config->general('colors', true));
|
|
|
|
|
|
|
|
if ($disabled) {
|
|
|
|
$string = strip_tags($string);
|
|
|
|
return $string;
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach (self::$foregroundColors as $key => $code) {
|
|
|
|
$replaceFrom = array(
|
|
|
|
'<' . $key . '>',
|
|
|
|
'</' . $key . '>'
|
|
|
|
);
|
|
|
|
|
|
|
|
$replaceTo = array(
|
|
|
|
"\033[" . $code . 'm',
|
|
|
|
"\033[0m"
|
|
|
|
);
|
|
|
|
|
|
|
|
$string = str_replace($replaceFrom, $replaceTo, $string);
|
|
|
|
}
|
|
|
|
|
|
|
|
return $string;
|
|
|
|
}
|
|
|
|
}
|