Version 1
[yaffs-website] / vendor / phpdocumentor / reflection-docblock / src / phpDocumentor / Reflection / DocBlock / Tag / AuthorTag.php
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/AuthorTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/AuthorTag.php
new file mode 100644 (file)
index 0000000..bacf52e
--- /dev/null
@@ -0,0 +1,131 @@
+<?php
+/**
+ * phpDocumentor
+ *
+ * PHP Version 5.3
+ *
+ * @author    Vasil Rangelov <boen.robot@gmail.com>
+ * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
+ * @license   http://www.opensource.org/licenses/mit-license.php MIT
+ * @link      http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tag;
+
+use phpDocumentor\Reflection\DocBlock\Tag;
+
+/**
+ * Reflection class for an @author tag in a Docblock.
+ *
+ * @author  Mike van Riel <mike.vanriel@naenius.com>
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link    http://phpdoc.org
+ */
+class AuthorTag extends Tag
+{
+    /**
+     * PCRE regular expression matching any valid value for the name component.
+     */
+    const REGEX_AUTHOR_NAME = '[^\<]*';
+
+    /**
+     * PCRE regular expression matching any valid value for the email component.
+     */
+    const REGEX_AUTHOR_EMAIL = '[^\>]*';
+
+    /** @var string The name of the author */
+    protected $authorName = '';
+
+    /** @var string The email of the author */
+    protected $authorEmail = '';
+    
+    public function getContent()
+    {
+        if (null === $this->content) {
+            $this->content = $this->authorName;
+            if ('' != $this->authorEmail) {
+                $this->content .= "<{$this->authorEmail}>";
+            }
+        }
+
+        return $this->content;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setContent($content)
+    {
+        parent::setContent($content);
+        if (preg_match(
+            '/^(' . self::REGEX_AUTHOR_NAME .
+            ')(\<(' . self::REGEX_AUTHOR_EMAIL .
+            ')\>)?$/u',
+            $this->description,
+            $matches
+        )) {
+            $this->authorName = trim($matches[1]);
+            if (isset($matches[3])) {
+                $this->authorEmail = trim($matches[3]);
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * Gets the author's name.
+     * 
+     * @return string The author's name.
+     */
+    public function getAuthorName()
+    {
+        return $this->authorName;
+    }
+    
+    /**
+     * Sets the author's name.
+     * 
+     * @param string $authorName The new author name.
+     *     An invalid value will set an empty string.
+     * 
+     * @return $this
+     */
+    public function setAuthorName($authorName)
+    {
+        $this->content = null;
+        $this->authorName
+            = preg_match('/^' . self::REGEX_AUTHOR_NAME . '$/u', $authorName)
+            ? $authorName : '';
+
+        return $this;
+    }
+
+    /**
+     * Gets the author's email.
+     * 
+     * @return string The author's email.
+     */
+    public function getAuthorEmail()
+    {
+        return $this->authorEmail;
+    }
+    
+    /**
+     * Sets the author's email.
+     * 
+     * @param string $authorEmail The new author email.
+     *     An invalid value will set an empty string.
+     * 
+     * @return $this
+     */
+    public function setAuthorEmail($authorEmail)
+    {
+        $this->authorEmail
+            = preg_match('/^' . self::REGEX_AUTHOR_EMAIL . '$/u', $authorEmail)
+            ? $authorEmail : '';
+
+        $this->content = null;
+        return $this;
+    }
+}