This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/tests/lib/vendor/lime/LimePrinter.php
2010-01-04 15:26:20 +01:00

127 lines
3.3 KiB
PHP

<?php
/*
* This file is part of the Lime framework.
*
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
* (c) Bernhard Schussek <bernhard.schussek@symfony-project.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
class LimePrinter
{
const
OK = 0,
NOT_OK = 1,
COMMENT = 2,
SKIP = 3,
WARNING = 4,
ERROR = 5,
HAPPY = 6,
STRING = 7,
NUMBER = 8,
BOOLEAN = 9,
INFO = 10,
TRACE = 11,
TODO = 12;
protected
$colorizer = null;
public function __construct(LimeColorizer $colorizer = null)
{
if (!is_null($colorizer))
{
$colorizer->setStyle(self::OK, array('fg' => 'green', 'bold' => true));
$colorizer->setStyle(self::NOT_OK, array('bg' => 'red', 'fg' => 'white', 'bold' => true));
$colorizer->setStyle(self::COMMENT, array('fg' => 'yellow'));
$colorizer->setStyle(self::SKIP, array('fg' => 'yellow', 'bold' => true));
$colorizer->setStyle(self::TODO, array('fg' => 'yellow', 'bold' => true));
$colorizer->setStyle(self::WARNING, array('fg' => 'white', 'bg' => 'yellow', 'bold' => true));
$colorizer->setStyle(self::ERROR, array('bg' => 'red', 'fg' => 'white', 'bold' => true));
$colorizer->setStyle(self::HAPPY, array('fg' => 'white', 'bg' => 'green', 'bold' => true));
$colorizer->setStyle(self::STRING, array('fg' => 'cyan'));
$colorizer->setStyle(self::NUMBER, array());
$colorizer->setStyle(self::BOOLEAN, array('fg' => 'cyan'));
$colorizer->setStyle(self::INFO, array('fg' => 'cyan', 'bold' => true));
$colorizer->setStyle(self::TRACE, array('fg' => 'green', 'bold' => true));
}
$this->colorizer = $colorizer;
}
public function printText($text, $style = null)
{
print $this->colorize($text, $style);
}
public function printLine($text, $style = null)
{
print $this->colorize($text, $style)."\n";
}
public function printBox($text, $style = null)
{
print $this->colorize(str_pad($text, 80, ' '), $style)."\n";
}
public function printLargeBox($text, $style = null)
{
$space = $this->colorize(str_repeat(' ', 80), $style)."\n";
$text = trim($text);
$text = wordwrap($text, 75, "\n");
print "\n".$space;
foreach (explode("\n", $text) as $line)
{
print $this->colorize(str_pad(' '.$line, 80, ' '), $style)."\n";
}
print $space."\n";
}
protected function colorize($text, $style)
{
if (is_null($this->colorizer))
{
return $text;
}
else
{
if (is_null($style))
{
return preg_replace_callback('/("[^"]*"|(?<!\w)\d+(\.\d+)?(?!\w)|true|false'/*|(->|::)?\w+\([^\)]*\)*/.')/', array($this, 'autoColorize'), $text);
}
else
{
return $this->colorizer->colorize($text, $style);
}
}
}
public function autoColorize($text)
{
$text = $text[0];
if (is_null($this->colorizer))
{
return $text;
}
else
{
if ($text{0} == '"')
{
return $this->colorizer->colorize($text, self::STRING);
}
else if (in_array(strtolower($text), array('true', 'false')))
{
return $this->colorizer->colorize($text, self::BOOLEAN);
}
else
{
return $this->colorizer->colorize($text, self::NUMBER);
}
}
}
}