+++ /dev/null
-<?php
-
-/*
- * This file is part of the Behat.
- * (c) Konstantin Kudryashov <ever.zet@gmail.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Behat\Testwork\Output\Printer\Factory;
-
-use Behat\Testwork\Output\Exception\BadOutputPathException;
-use Symfony\Component\Console\Formatter\OutputFormatter;
-use Symfony\Component\Console\Formatter\OutputFormatterStyle;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Output\StreamOutput;
-
-/**
- * Creates an output stream for the console.
- *
- * @author Wouter J <wouter@wouterj.nl>
- * @author Konstantin Kudryashov <ever.zet@gmail.com>
- */
-class ConsoleOutputFactory extends OutputFactory
-{
- /**
- * Creates output formatter that is used to create a stream.
- *
- * @return OutputFormatter
- */
- protected function createOutputFormatter()
- {
- return new OutputFormatter();
- }
-
- /**
- * Configure output stream parameters.
- *
- * @param OutputInterface $output
- */
- protected function configureOutputStream(OutputInterface $output)
- {
- $verbosity = $this->getOutputVerbosity() ? OutputInterface::VERBOSITY_VERBOSE : OutputInterface::VERBOSITY_NORMAL;
- $output->setVerbosity($verbosity);
-
- if (null !== $this->isOutputDecorated()) {
- $output->getFormatter()->setDecorated($this->isOutputDecorated());
- }
- }
-
- /**
- * Returns new output stream.
- *
- * Override this method & call flush() to write output in another stream
- *
- * @return resource
- *
- * @throws BadOutputPathException
- */
- protected function createOutputStream()
- {
- if (null === $this->getOutputPath()) {
- $stream = fopen('php://stdout', 'w');
- } elseif (!is_dir($this->getOutputPath())) {
- $stream = fopen($this->getOutputPath(), 'w');
- } else {
- throw new BadOutputPathException(sprintf(
- 'Filename expected as `output_path` parameter, but got `%s`.',
- $this->getOutputPath()
- ), $this->getOutputPath());
- }
-
- return $stream;
- }
-
- /**
- * {@inheritdoc}
- */
- public function createOutput($stream = null)
- {
- $stream = $stream ? : $this->createOutputStream();
- $format = $this->createOutputFormatter();
-
- // set user-defined styles
- foreach ($this->getOutputStyles() as $name => $options) {
- $style = new OutputFormatterStyle();
-
- if (isset($options[0])) {
- $style->setForeground($options[0]);
- }
- if (isset($options[1])) {
- $style->setBackground($options[1]);
- }
- if (isset($options[2])) {
- $style->setOptions($options[2]);
- }
-
- $format->setStyle($name, $style);
- }
-
- $output = new StreamOutput(
- $stream,
- StreamOutput::VERBOSITY_NORMAL,
- $this->isOutputDecorated(),
- $format
- );
- $this->configureOutputStream($output);
-
- return $output;
- }
-}