Security update for permissions_by_term
[yaffs-website] / vendor / behat / gherkin / src / Behat / Gherkin / Keywords / ArrayKeywords.php
diff --git a/vendor/behat/gherkin/src/Behat/Gherkin/Keywords/ArrayKeywords.php b/vendor/behat/gherkin/src/Behat/Gherkin/Keywords/ArrayKeywords.php
new file mode 100644 (file)
index 0000000..35b9b82
--- /dev/null
@@ -0,0 +1,200 @@
+<?php
+
+/*
+ * This file is part of the Behat Gherkin.
+ * (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\Gherkin\Keywords;
+
+/**
+ * Array initializable keywords holder.
+ *
+ * $keywords = new Behat\Gherkin\Keywords\ArrayKeywords(array(
+ *     'en' => array(
+ *         'feature'          => 'Feature',
+ *         'background'       => 'Background',
+ *         'scenario'         => 'Scenario',
+ *         'scenario_outline' => 'Scenario Outline|Scenario Template',
+ *         'examples'         => 'Examples|Scenarios',
+ *         'given'            => 'Given',
+ *         'when'             => 'When',
+ *         'then'             => 'Then',
+ *         'and'              => 'And',
+ *         'but'              => 'But'
+ *     ),
+ *     'ru' => array(
+ *         'feature'          => 'Функционал',
+ *         'background'       => 'Предыстория',
+ *         'scenario'         => 'Сценарий',
+ *         'scenario_outline' => 'Структура сценария',
+ *         'examples'         => 'Значения',
+ *         'given'            => 'Допустим',
+ *         'when'             => 'Если',
+ *         'then'             => 'То',
+ *         'and'              => 'И',
+ *         'but'              => 'Но'
+ *     )
+ * ));
+ *
+ * @author Konstantin Kudryashov <ever.zet@gmail.com>
+ */
+class ArrayKeywords implements KeywordsInterface
+{
+    private $keywords = array();
+    private $keywordString = array();
+    private $language;
+
+    /**
+     * Initializes holder with keywords.
+     *
+     * @param array $keywords Keywords array
+     */
+    public function __construct(array $keywords)
+    {
+        $this->keywords = $keywords;
+    }
+
+    /**
+     * Sets keywords holder language.
+     *
+     * @param string $language Language name
+     */
+    public function setLanguage($language)
+    {
+        if (!isset($this->keywords[$language])) {
+            $this->language = 'en';
+        } else {
+            $this->language = $language;
+        }
+    }
+
+    /**
+     * Returns Feature keywords (splitted by "|").
+     *
+     * @return string
+     */
+    public function getFeatureKeywords()
+    {
+        return $this->keywords[$this->language]['feature'];
+    }
+
+    /**
+     * Returns Background keywords (splitted by "|").
+     *
+     * @return string
+     */
+    public function getBackgroundKeywords()
+    {
+        return $this->keywords[$this->language]['background'];
+    }
+
+    /**
+     * Returns Scenario keywords (splitted by "|").
+     *
+     * @return string
+     */
+    public function getScenarioKeywords()
+    {
+        return $this->keywords[$this->language]['scenario'];
+    }
+
+    /**
+     * Returns Scenario Outline keywords (splitted by "|").
+     *
+     * @return string
+     */
+    public function getOutlineKeywords()
+    {
+        return $this->keywords[$this->language]['scenario_outline'];
+    }
+
+    /**
+     * Returns Examples keywords (splitted by "|").
+     *
+     * @return string
+     */
+    public function getExamplesKeywords()
+    {
+        return $this->keywords[$this->language]['examples'];
+    }
+
+    /**
+     * Returns Given keywords (splitted by "|").
+     *
+     * @return string
+     */
+    public function getGivenKeywords()
+    {
+        return $this->keywords[$this->language]['given'];
+    }
+
+    /**
+     * Returns When keywords (splitted by "|").
+     *
+     * @return string
+     */
+    public function getWhenKeywords()
+    {
+        return $this->keywords[$this->language]['when'];
+    }
+
+    /**
+     * Returns Then keywords (splitted by "|").
+     *
+     * @return string
+     */
+    public function getThenKeywords()
+    {
+        return $this->keywords[$this->language]['then'];
+    }
+
+    /**
+     * Returns And keywords (splitted by "|").
+     *
+     * @return string
+     */
+    public function getAndKeywords()
+    {
+        return $this->keywords[$this->language]['and'];
+    }
+
+    /**
+     * Returns But keywords (splitted by "|").
+     *
+     * @return string
+     */
+    public function getButKeywords()
+    {
+        return $this->keywords[$this->language]['but'];
+    }
+
+    /**
+     * Returns all step keywords (Given, When, Then, And, But).
+     *
+     * @return string
+     */
+    public function getStepKeywords()
+    {
+        if (!isset($this->keywordString[$this->language])) {
+            $keywords = array_merge(
+                explode('|', $this->getGivenKeywords()),
+                explode('|', $this->getWhenKeywords()),
+                explode('|', $this->getThenKeywords()),
+                explode('|', $this->getAndKeywords()),
+                explode('|', $this->getButKeywords())
+            );
+
+            usort($keywords, function ($keyword1, $keyword2) {
+                return mb_strlen($keyword2, 'utf8') - mb_strlen($keyword1, 'utf8');
+            });
+
+            $this->keywordString[$this->language] = implode('|', $keywords);
+        }
+
+        return $this->keywordString[$this->language];
+    }
+}