Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Behat / Definition / Printer / ConsoleDefinitionInformationPrinter.php
diff --git a/vendor/behat/behat/src/Behat/Behat/Definition/Printer/ConsoleDefinitionInformationPrinter.php b/vendor/behat/behat/src/Behat/Behat/Definition/Printer/ConsoleDefinitionInformationPrinter.php
new file mode 100644 (file)
index 0000000..d690982
--- /dev/null
@@ -0,0 +1,147 @@
+<?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\Behat\Definition\Printer;
+
+use Behat\Behat\Definition\Definition;
+use Behat\Testwork\Suite\Suite;
+
+/**
+ * Prints definitions with full information about them.
+ *
+ * @author Konstantin Kudryashov <ever.zet@gmail.com>
+ */
+final class ConsoleDefinitionInformationPrinter extends ConsoleDefinitionPrinter
+{
+    /**
+     * @var null|string
+     */
+    private $searchCriterion;
+
+    /**
+     * Sets search criterion.
+     *
+     * @param string $criterion
+     */
+    public function setSearchCriterion($criterion)
+    {
+        $this->searchCriterion = $criterion;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function printDefinitions(Suite $suite, $definitions)
+    {
+        $search = $this->searchCriterion;
+        $output = array();
+
+        foreach ($definitions as $definition) {
+            $definition = $this->translateDefinition($suite, $definition);
+            $pattern = $definition->getPattern();
+
+            if (null !== $search && false === mb_strpos($pattern, $search, 0, 'utf8')) {
+                continue;
+            }
+
+            $lines = array_merge(
+                $this->extractHeader($suite, $definition),
+                $this->extractDescription($suite, $definition),
+                $this->extractFooter($suite, $definition)
+            );
+
+            $output[] = implode(PHP_EOL, $lines) . PHP_EOL;
+        }
+
+        $this->write(rtrim(implode(PHP_EOL, $output)));
+    }
+
+    /**
+     * Extracts the formatted header from the definition.
+     *
+     * @param Suite      $suite
+     * @param Definition $definition
+     *
+     * @return string[]
+     */
+    private function extractHeader(Suite $suite, Definition $definition)
+    {
+        $pattern = $definition->getPattern();
+        $lines = array();
+        $lines[] = strtr(
+            '{suite} <def_dimmed>|</def_dimmed> <info>{type}</info> <def_regex>{regex}</def_regex>', array(
+                '{suite}' => $suite->getName(),
+                '{type}'  => $this->getDefinitionType($definition),
+                '{regex}' => $pattern,
+            )
+        );
+
+        return $lines;
+    }
+
+    /**
+     * Extracts the formatted description from the definition.
+     *
+     * @param Suite      $suite
+     * @param Definition $definition
+     *
+     * @return string[]
+     */
+    private function extractDescription(Suite $suite, Definition $definition)
+    {
+        $definition = $this->translateDefinition($suite, $definition);
+
+        $lines = array();
+        if ($description = $definition->getDescription()) {
+            foreach (explode("\n", $description) as $descriptionLine) {
+                $lines[] = strtr(
+                    '{space}<def_dimmed>|</def_dimmed> {description}', array(
+                        '{space}'       => str_pad('', mb_strlen($suite->getName(), 'utf8') + 1),
+                        '{description}' => $descriptionLine
+                    )
+                );
+            }
+        }
+
+        return $lines;
+    }
+
+    /**
+     * Extracts the formatted footer from the definition.
+     *
+     * @param Suite      $suite
+     * @param Definition $definition
+     *
+     * @return string[]
+     */
+    private function extractFooter(Suite $suite, Definition $definition)
+    {
+        $lines = array();
+        $lines[] = strtr(
+            '{space}<def_dimmed>|</def_dimmed> at `{path}`', array(
+                '{space}' => str_pad('', mb_strlen($suite->getName(), 'utf8') + 1),
+                '{path}'  => $definition->getPath()
+            )
+        );
+
+        if ($this->isVerbose()) {
+            $lines[] = strtr(
+                '{space}<def_dimmed>|</def_dimmed> on `{filepath}[{start}:{end}]`', array(
+                    '{space}' => str_pad('', mb_strlen($suite->getName(), 'utf8') + 1),
+                    '{filepath}' => $definition->getReflection()->getFileName(),
+                    '{start}' => $definition->getReflection()->getStartLine(),
+                    '{end}' => $definition->getReflection()->getEndLine()
+                )
+            );
+        }
+
+        return $lines;
+    }
+}