Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Behat / Definition / Pattern / PatternTransformer.php
diff --git a/vendor/behat/behat/src/Behat/Behat/Definition/Pattern/PatternTransformer.php b/vendor/behat/behat/src/Behat/Behat/Definition/Pattern/PatternTransformer.php
new file mode 100644 (file)
index 0000000..6af5bac
--- /dev/null
@@ -0,0 +1,79 @@
+<?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\Pattern;
+
+use Behat\Behat\Definition\Exception\UnknownPatternException;
+use Behat\Behat\Definition\Exception\UnsupportedPatternTypeException;
+use Behat\Behat\Definition\Pattern\Policy\PatternPolicy;
+
+/**
+ * Transforms patterns using registered policies.
+ *
+ * @author Konstantin Kudryashov <ever.zet@gmail.com>
+ */
+final class PatternTransformer
+{
+    /**
+     * @var PatternPolicy[]
+     */
+    private $policies = array();
+
+    /**
+     * Registers pattern policy.
+     *
+     * @param PatternPolicy $policy
+     */
+    public function registerPatternPolicy(PatternPolicy $policy)
+    {
+        $this->policies[] = $policy;
+    }
+
+    /**
+     * Generates pattern.
+     *
+     * @param string $type
+     * @param string $stepText
+     *
+     * @return Pattern
+     *
+     * @throws UnsupportedPatternTypeException
+     */
+    public function generatePattern($type, $stepText)
+    {
+        foreach ($this->policies as $policy) {
+            if ($policy->supportsPatternType($type)) {
+                return $policy->generatePattern($stepText);
+            }
+        }
+
+        throw new UnsupportedPatternTypeException(sprintf('Can not find policy for a pattern type `%s`.', $type), $type);
+    }
+
+    /**
+     * Transforms pattern string to regex.
+     *
+     * @param string $pattern
+     *
+     * @return string
+     *
+     * @throws UnknownPatternException
+     */
+    public function transformPatternToRegex($pattern)
+    {
+        foreach ($this->policies as $policy) {
+            if ($policy->supportsPattern($pattern)) {
+                return $policy->transformPatternToRegex($pattern);
+            }
+        }
+
+        throw new UnknownPatternException(sprintf('Can not find policy for a pattern `%s`.', $pattern), $pattern);
+    }
+}