Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Testwork / Output / Printer / Factory / ConsoleOutputFactory.php
diff --git a/vendor/behat/behat/src/Behat/Testwork/Output/Printer/Factory/ConsoleOutputFactory.php b/vendor/behat/behat/src/Behat/Testwork/Output/Printer/Factory/ConsoleOutputFactory.php
new file mode 100644 (file)
index 0000000..e1d22ee
--- /dev/null
@@ -0,0 +1,112 @@
+<?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;
+    }
+}