Spaces:
Sleeping
Sleeping
| /* | |
| * 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\Output; | |
| use Symfony\Component\Console\Formatter\OutputFormatterInterface; | |
| use Symfony\Component\Console\Formatter\OutputFormatter; | |
| /** | |
| * Base class for output classes. | |
| * | |
| * There are five levels of verbosity: | |
| * | |
| * * normal: no option passed (normal output) | |
| * * verbose: -v (more output) | |
| * * very verbose: -vv (highly extended output) | |
| * * debug: -vvv (all debug output) | |
| * * quiet: -q (no output) | |
| * | |
| * @author Fabien Potencier <fabien@symfony.com> | |
| */ | |
| abstract class Output implements OutputInterface | |
| { | |
| private $verbosity; | |
| private $formatter; | |
| /** | |
| * Constructor. | |
| * | |
| * @param int $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) | |
| * @param bool $decorated Whether to decorate messages | |
| * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) | |
| */ | |
| public function __construct($verbosity = self::VERBOSITY_NORMAL, $decorated = false, OutputFormatterInterface $formatter = null) | |
| { | |
| $this->verbosity = null === $verbosity ? self::VERBOSITY_NORMAL : $verbosity; | |
| $this->formatter = $formatter ?: new OutputFormatter(); | |
| $this->formatter->setDecorated($decorated); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setFormatter(OutputFormatterInterface $formatter) | |
| { | |
| $this->formatter = $formatter; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getFormatter() | |
| { | |
| return $this->formatter; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setDecorated($decorated) | |
| { | |
| $this->formatter->setDecorated($decorated); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function isDecorated() | |
| { | |
| return $this->formatter->isDecorated(); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setVerbosity($level) | |
| { | |
| $this->verbosity = (int) $level; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getVerbosity() | |
| { | |
| return $this->verbosity; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function isQuiet() | |
| { | |
| return self::VERBOSITY_QUIET === $this->verbosity; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function isVerbose() | |
| { | |
| return self::VERBOSITY_VERBOSE <= $this->verbosity; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function isVeryVerbose() | |
| { | |
| return self::VERBOSITY_VERY_VERBOSE <= $this->verbosity; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function isDebug() | |
| { | |
| return self::VERBOSITY_DEBUG <= $this->verbosity; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function writeln($messages, $options = self::OUTPUT_NORMAL) | |
| { | |
| $this->write($messages, true, $options); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function write($messages, $newline = false, $options = self::OUTPUT_NORMAL) | |
| { | |
| $messages = (array) $messages; | |
| $types = self::OUTPUT_NORMAL | self::OUTPUT_RAW | self::OUTPUT_PLAIN; | |
| $type = $types & $options ?: self::OUTPUT_NORMAL; | |
| $verbosities = self::VERBOSITY_QUIET | self::VERBOSITY_NORMAL | self::VERBOSITY_VERBOSE | self::VERBOSITY_VERY_VERBOSE | self::VERBOSITY_DEBUG; | |
| $verbosity = $verbosities & $options ?: self::VERBOSITY_NORMAL; | |
| if ($verbosity > $this->getVerbosity()) { | |
| return; | |
| } | |
| foreach ($messages as $message) { | |
| switch ($type) { | |
| case OutputInterface::OUTPUT_NORMAL: | |
| $message = $this->formatter->format($message); | |
| break; | |
| case OutputInterface::OUTPUT_RAW: | |
| break; | |
| case OutputInterface::OUTPUT_PLAIN: | |
| $message = strip_tags($this->formatter->format($message)); | |
| break; | |
| } | |
| $this->doWrite($message, $newline); | |
| } | |
| } | |
| /** | |
| * Writes a message to the output. | |
| * | |
| * @param string $message A message to write to the output | |
| * @param bool $newline Whether to add a newline or not | |
| */ | |
| abstract protected function doWrite($message, $newline); | |
| } | |