Security update for permissions_by_term
[yaffs-website] / vendor / drupal / drupal-extension / src / Drupal / DrupalExtension / Context / Annotation / Reader.php
diff --git a/vendor/drupal/drupal-extension/src/Drupal/DrupalExtension/Context/Annotation/Reader.php b/vendor/drupal/drupal-extension/src/Drupal/DrupalExtension/Context/Annotation/Reader.php
new file mode 100644 (file)
index 0000000..0d03b66
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+
+namespace Drupal\DrupalExtension\Context\Annotation;
+
+use Behat\Behat\Context\Annotation\AnnotationReader;
+use Drupal\DrupalExtension\Hook\Dispatcher;
+use ReflectionMethod;
+
+/**
+ * Annotated contexts reader.
+ *
+ * @see \Behat\Behat\Context\Loader\AnnotatedLoader
+ */
+class Reader implements AnnotationReader {
+
+  /**
+   * @var string
+   */
+  private static $regex = '/^\@(beforenodecreate|afternodecreate|beforetermcreate|aftertermcreate|beforeusercreate|afterusercreate)(?:\s+(.+))?$/i';
+
+  /**
+   * @var string[]
+   */
+  private static $classes = array(
+    'afternodecreate' => 'Drupal\DrupalExtension\Hook\Call\AfterNodeCreate',
+    'aftertermcreate' => 'Drupal\DrupalExtension\Hook\Call\AfterTermCreate',
+    'afterusercreate' => 'Drupal\DrupalExtension\Hook\Call\AfterUserCreate',
+    'beforenodecreate' => 'Drupal\DrupalExtension\Hook\Call\BeforeNodeCreate',
+    'beforetermcreate' => 'Drupal\DrupalExtension\Hook\Call\BeforeTermCreate',
+    'beforeusercreate' => 'Drupal\DrupalExtension\Hook\Call\BeforeUserCreate',
+  );
+
+  /**
+   * {@inheritDoc}
+   */
+  public function readCallee($contextClass, ReflectionMethod $method, $docLine, $description) {
+
+    if (!preg_match(self::$regex, $docLine, $match)) {
+      return null;
+    }
+
+    $type = strtolower($match[1]);
+    $class = self::$classes[$type];
+    $pattern = isset($match[2]) ? $match[2] : null;
+    $callable = array($contextClass, $method->getName());
+
+    return new $class($pattern, $callable, $description);
+  }
+
+}