Version 1
[yaffs-website] / vendor / phpdocumentor / reflection-docblock / src / phpDocumentor / Reflection / DocBlock / Tag / ParamTag.php
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ParamTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ParamTag.php
new file mode 100644 (file)
index 0000000..9bc0270
--- /dev/null
@@ -0,0 +1,119 @@
+<?php
+/**
+ * phpDocumentor
+ *
+ * PHP Version 5.3
+ *
+ * @author    Mike van Riel <mike.vanriel@naenius.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 a @param 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 ParamTag extends ReturnTag
+{
+    /** @var string */
+    protected $variableName = '';
+
+    /** @var bool determines whether this is a variadic argument */
+    protected $isVariadic = false;
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getContent()
+    {
+        if (null === $this->content) {
+            $this->content
+                = "{$this->type} {$this->variableName} {$this->description}";
+        }
+        return $this->content;
+    }
+    /**
+     * {@inheritdoc}
+     */
+    public function setContent($content)
+    {
+        Tag::setContent($content);
+        $parts = preg_split(
+            '/(\s+)/Su',
+            $this->description,
+            3,
+            PREG_SPLIT_DELIM_CAPTURE
+        );
+
+        // if the first item that is encountered is not a variable; it is a type
+        if (isset($parts[0])
+            && (strlen($parts[0]) > 0)
+            && ($parts[0][0] !== '$')
+        ) {
+            $this->type = array_shift($parts);
+            array_shift($parts);
+        }
+
+        // if the next item starts with a $ or ...$ it must be the variable name
+        if (isset($parts[0])
+            && (strlen($parts[0]) > 0)
+            && ($parts[0][0] == '$' || substr($parts[0], 0, 4) === '...$')
+        ) {
+            $this->variableName = array_shift($parts);
+            array_shift($parts);
+
+            if (substr($this->variableName, 0, 3) === '...') {
+                $this->isVariadic = true;
+                $this->variableName = substr($this->variableName, 3);
+            }
+        }
+
+        $this->setDescription(implode('', $parts));
+
+        $this->content = $content;
+        return $this;
+    }
+
+    /**
+     * Returns the variable's name.
+     *
+     * @return string
+     */
+    public function getVariableName()
+    {
+        return $this->variableName;
+    }
+
+    /**
+     * Sets the variable's name.
+     *
+     * @param string $name The new name for this variable.
+     *
+     * @return $this
+     */
+    public function setVariableName($name)
+    {
+        $this->variableName = $name;
+
+        $this->content = null;
+        return $this;
+    }
+
+    /**
+     * Returns whether this tag is variadic.
+     *
+     * @return boolean
+     */
+    public function isVariadic()
+    {
+        return $this->isVariadic;
+    }
+}