forked from doctrine/mongodb-odm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3d4c57a
commit 303cd63
Showing
42 changed files
with
2,989 additions
and
1,656 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
218 changes: 142 additions & 76 deletions
218
lib/vendor/Symfony/Component/Console/Command/Command.php
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
190 changes: 190 additions & 0 deletions
190
lib/vendor/Symfony/Component/Console/Formatter/OutputFormatter.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,190 @@ | ||
<?php | ||
|
||
/* | ||
* This file is part of the Symfony package. | ||
* | ||
* (c) Fabien Potencier <fabien@symfony.com> | ||
* | ||
* For the full copyright and license information, please view the LICENSE | ||
* file that was distributed with this source code. | ||
*/ | ||
|
||
namespace Symfony\Component\Console\Formatter; | ||
|
||
/** | ||
* Formatter class for console output. | ||
* | ||
* @author Konstantin Kudryashov <ever.zet@gmail.com> | ||
* | ||
* @api | ||
*/ | ||
class OutputFormatter implements OutputFormatterInterface | ||
{ | ||
/** | ||
* The pattern to phrase the format. | ||
*/ | ||
const FORMAT_PATTERN = '#<([a-z][a-z0-9_=;-]+)>(.*?)</\\1?>#is'; | ||
|
||
private $decorated; | ||
private $styles = array(); | ||
|
||
/** | ||
* Initializes console output formatter. | ||
* | ||
* @param Boolean $decorated Whether this formatter should actually decorate strings | ||
* @param array $styles Array of "name => FormatterStyle" instance | ||
* | ||
* @api | ||
*/ | ||
public function __construct($decorated = null, array $styles = array()) | ||
{ | ||
$this->decorated = (Boolean) $decorated; | ||
|
||
$this->setStyle('error', new OutputFormatterStyle('white', 'red')); | ||
$this->setStyle('info', new OutputFormatterStyle('green')); | ||
$this->setStyle('comment', new OutputFormatterStyle('yellow')); | ||
$this->setStyle('question', new OutputFormatterStyle('black', 'cyan')); | ||
|
||
foreach ($styles as $name => $style) { | ||
$this->setStyle($name, $style); | ||
} | ||
} | ||
|
||
/** | ||
* Sets the decorated flag. | ||
* | ||
* @param Boolean $decorated Whether to decorated the messages or not | ||
* | ||
* @api | ||
*/ | ||
public function setDecorated($decorated) | ||
{ | ||
$this->decorated = (Boolean) $decorated; | ||
} | ||
|
||
/** | ||
* Gets the decorated flag. | ||
* | ||
* @return Boolean true if the output will decorate messages, false otherwise | ||
* | ||
* @api | ||
*/ | ||
public function isDecorated() | ||
{ | ||
return $this->decorated; | ||
} | ||
|
||
/** | ||
* Sets a new style. | ||
* | ||
* @param string $name The style name | ||
* @param OutputFormatterStyleInterface $style The style instance | ||
* | ||
* @api | ||
*/ | ||
public function setStyle($name, OutputFormatterStyleInterface $style) | ||
{ | ||
$this->styles[strtolower($name)] = $style; | ||
} | ||
|
||
/** | ||
* Checks if output formatter has style with specified name. | ||
* | ||
* @param string $name | ||
* | ||
* @return Boolean | ||
* | ||
* @api | ||
*/ | ||
public function hasStyle($name) | ||
{ | ||
return isset($this->styles[strtolower($name)]); | ||
} | ||
|
||
/** | ||
* Gets style options from style with specified name. | ||
* | ||
* @param string $name | ||
* | ||
* @return OutputFormatterStyleInterface | ||
* | ||
* @api | ||
*/ | ||
public function getStyle($name) | ||
{ | ||
if (!$this->hasStyle($name)) { | ||
throw new \InvalidArgumentException('Undefined style: '.$name); | ||
} | ||
|
||
return $this->styles[strtolower($name)]; | ||
} | ||
|
||
/** | ||
* Formats a message according to the given styles. | ||
* | ||
* @param string $message The message to style | ||
* | ||
* @return string The styled message | ||
* | ||
* @api | ||
*/ | ||
public function format($message) | ||
{ | ||
return preg_replace_callback(self::FORMAT_PATTERN, array($this, 'replaceStyle'), $message); | ||
} | ||
|
||
/** | ||
* Replaces style of the output. | ||
* | ||
* @param array $match | ||
* | ||
* @return string The replaced style | ||
*/ | ||
private function replaceStyle($match) | ||
{ | ||
if (!$this->isDecorated()) { | ||
return $match[2]; | ||
} | ||
|
||
if (isset($this->styles[strtolower($match[1])])) { | ||
$style = $this->styles[strtolower($match[1])]; | ||
} else { | ||
$style = $this->createStyleFromString($match[1]); | ||
|
||
if (false === $style) { | ||
return $match[0]; | ||
} | ||
} | ||
|
||
return $style->apply($this->format($match[2])); | ||
} | ||
|
||
/** | ||
* Tries to create new style instance from string. | ||
* | ||
* @param string $string | ||
* | ||
* @return Symfony\Component\Console\Format\FormatterStyle|Boolean false if string is not format string | ||
*/ | ||
private function createStyleFromString($string) | ||
{ | ||
if (!preg_match_all('/([^=]+)=([^;]+)(;|$)/', strtolower($string), $matches, PREG_SET_ORDER)) { | ||
return false; | ||
} | ||
|
||
$style = new OutputFormatterStyle(); | ||
foreach ($matches as $match) { | ||
array_shift($match); | ||
|
||
if ('fg' == $match[0]) { | ||
$style->setForeground($match[1]); | ||
} elseif ('bg' == $match[0]) { | ||
$style->setBackground($match[1]); | ||
} else { | ||
$style->setOption($match[1]); | ||
} | ||
} | ||
|
||
return $style; | ||
} | ||
} |
Oops, something went wrong.