Version 1
[yaffs-website] / vendor / phpdocumentor / reflection-docblock / src / phpDocumentor / Reflection / DocBlock / Tag / SourceTag.php
diff --git a/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SourceTag.php b/vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/SourceTag.php
new file mode 100644 (file)
index 0000000..3400220
--- /dev/null
@@ -0,0 +1,137 @@
+<?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 a @source tag in a Docblock.
+ *
+ * @author  Vasil Rangelov <boen.robot@gmail.com>
+ * @license http://www.opensource.org/licenses/mit-license.php MIT
+ * @link    http://phpdoc.org
+ */
+class SourceTag extends Tag
+{
+    /**
+     * @var int The starting line, relative to the structural element's
+     *     location.
+     */
+    protected $startingLine = 1;
+
+    /** 
+     * @var int|null The number of lines, relative to the starting line. NULL
+     *     means "to the end".
+     */
+    protected $lineCount = null;
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getContent()
+    {
+        if (null === $this->content) {
+            $this->content
+                = "{$this->startingLine} {$this->lineCount} {$this->description}";
+        }
+
+        return $this->content;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setContent($content)
+    {
+        parent::setContent($content);
+        if (preg_match(
+            '/^
+                # Starting line
+                ([1-9]\d*)
+                \s*
+                # Number of lines
+                (?:
+                    ((?1))
+                    \s+
+                )?
+                # Description
+                (.*)
+            $/sux',
+            $this->description,
+            $matches
+        )) {
+            $this->startingLine = (int)$matches[1];
+            if (isset($matches[2]) && '' !== $matches[2]) {
+                $this->lineCount = (int)$matches[2];
+            }
+            $this->setDescription($matches[3]);
+            $this->content = $content;
+        }
+
+        return $this;
+    }
+
+    /**
+     * Gets the starting line.
+     *
+     * @return int The starting line, relative to the structural element's
+     *     location.
+     */
+    public function getStartingLine()
+    {
+        return $this->startingLine;
+    }
+
+    /**
+     * Sets the starting line.
+     * 
+     * @param int $startingLine The new starting line, relative to the
+     *     structural element's location.
+     * 
+     * @return $this
+     */
+    public function setStartingLine($startingLine)
+    {
+        $this->startingLine = $startingLine;
+
+        $this->content = null;
+        return $this;
+    }
+
+    /**
+     * Returns the number of lines.
+     *
+     * @return int|null The number of lines, relative to the starting line. NULL
+     *     means "to the end".
+     */
+    public function getLineCount()
+    {
+        return $this->lineCount;
+    }
+
+    /**
+     * Sets the number of lines.
+     * 
+     * @param int|null $lineCount The new number of lines, relative to the
+     *     starting line. NULL means "to the end".
+     * 
+     * @return $this
+     */
+    public function setLineCount($lineCount)
+    {
+        $this->lineCount = $lineCount;
+
+        $this->content = null;
+        return $this;
+    }
+}