Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Behat / Gherkin / Cli / SyntaxController.php
diff --git a/vendor/behat/behat/src/Behat/Behat/Gherkin/Cli/SyntaxController.php b/vendor/behat/behat/src/Behat/Behat/Gherkin/Cli/SyntaxController.php
new file mode 100644 (file)
index 0000000..a3e3f6c
--- /dev/null
@@ -0,0 +1,108 @@
+<?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\Gherkin\Cli;
+
+use Behat\Gherkin\Keywords\KeywordsDumper;
+use Behat\Testwork\Cli\Controller;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Formatter\OutputFormatterStyle;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Translation\TranslatorInterface;
+
+/**
+ * Prints example of the feature to present all available syntax keywords.
+ *
+ * @author Konstantin Kudryashov <ever.zet@gmail.com>
+ */
+final class SyntaxController implements Controller
+{
+    /**
+     * @var KeywordsDumper
+     */
+    private $keywordsDumper;
+    /**
+     * @var TranslatorInterface
+     */
+    private $translator;
+
+    /**
+     * Initializes controller.
+     *
+     * @param KeywordsDumper      $dumper
+     * @param TranslatorInterface $translator
+     */
+    public function __construct(KeywordsDumper $dumper, TranslatorInterface $translator)
+    {
+        $dumper->setKeywordsDumperFunction(array($this, 'dumpKeywords'));
+        $this->keywordsDumper = $dumper;
+        $this->translator = $translator;
+    }
+
+    /**
+     * Configures command to be executable by the controller.
+     *
+     * @param Command $command
+     */
+    public function configure(Command $command)
+    {
+        $command
+            ->addOption(
+                '--story-syntax', null, InputOption::VALUE_NONE,
+                "Print <comment>*.feature</comment> example." . PHP_EOL .
+                "Use <info>--lang</info> to see specific language."
+            );
+    }
+
+    /**
+     * Executes controller.
+     *
+     * @param InputInterface  $input
+     * @param OutputInterface $output
+     *
+     * @return null|integer
+     */
+    public function execute(InputInterface $input, OutputInterface $output)
+    {
+        if (!$input->getOption('story-syntax')) {
+            return null;
+        }
+
+        $output->getFormatter()->setStyle('gherkin_keyword', new OutputFormatterStyle('green', null, array('bold')));
+        $output->getFormatter()->setStyle('gherkin_comment', new OutputFormatterStyle('yellow'));
+
+        $story = $this->keywordsDumper->dump($this->translator->getLocale());
+        $story = preg_replace('/^\#.*/', '<gherkin_comment>$0</gherkin_comment>', $story);
+        $output->writeln($story);
+        $output->writeln('');
+
+        return 0;
+    }
+
+    /**
+     * Keywords dumper.
+     *
+     * @param array $keywords keywords list
+     *
+     * @return string
+     */
+    public function dumpKeywords(array $keywords)
+    {
+        $dump = '<gherkin_keyword>' . implode('</gherkin_keyword>|<gherkin_keyword>', $keywords) . '</gherkin_keyword>';
+
+        if (1 < count($keywords)) {
+            return '[' . $dump . ']';
+        }
+
+        return $dump;
+    }
+}