mirror of
https://github.com/barryvdh/ReflectionDocBlock.git
synced 2026-08-18 01:57:13 +00:00
Merge branch 'master' of github.com:boenrobot/ReflectionDocBlock into version-and-derivatives
This commit is contained in:
@@ -83,7 +83,7 @@ class DocBlock implements \Reflector
|
||||
|
||||
list($short, $long, $tags) = $this->splitDocBlock($docblock);
|
||||
$this->short_description = $short;
|
||||
$this->long_description = new DocBlock\LongDescription($long);
|
||||
$this->long_description = new DocBlock\Description($long);
|
||||
$this->parseTags($tags);
|
||||
|
||||
$this->namespace = $namespace;
|
||||
@@ -222,9 +222,7 @@ class DocBlock implements \Reflector
|
||||
|
||||
// create proper Tag objects
|
||||
foreach ($result as $key => $tag_line) {
|
||||
$tag = DocBlock\Tag::createInstance($tag_line);
|
||||
$tag->setDocBlock($this);
|
||||
$result[$key] = $tag;
|
||||
$result[$key] = DocBlock\Tag::createInstance($tag_line, $this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+11
-5
@@ -13,13 +13,13 @@
|
||||
namespace phpDocumentor\Reflection\DocBlock;
|
||||
|
||||
/**
|
||||
* Parses a Long Description of a DocBlock.
|
||||
* Parses a Description of a DocBlock or tag.
|
||||
*
|
||||
* @author Mike van Riel <mike.vanriel@naenius.com>
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT
|
||||
* @link http://phpdoc.org
|
||||
*/
|
||||
class LongDescription implements \Reflector
|
||||
class Description implements \Reflector
|
||||
{
|
||||
/** @var string */
|
||||
protected $contents = '';
|
||||
@@ -30,15 +30,20 @@ class LongDescription implements \Reflector
|
||||
/** @var \phpDocumentor\Reflection\DocBlock\Tags[] */
|
||||
protected $tags = array();
|
||||
|
||||
/** @var DocBlock The DocBlock which this description belongs to. */
|
||||
protected $docblock = null;
|
||||
|
||||
/**
|
||||
* Parses the string for inline tags and if the Markdown class is included;
|
||||
* format the found text.
|
||||
*
|
||||
* @param string $content the DocBlock contents without asterisks.
|
||||
* @param string $content The DocBlock contents without asterisks.
|
||||
* @param DocBlock $docblock The DocBlock which this description belongs to.
|
||||
*/
|
||||
public function __construct($content)
|
||||
public function __construct($content, DocBlock $docblock = null)
|
||||
{
|
||||
$this->contents = trim($content);
|
||||
$this->docblock = $docblock;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -97,7 +102,8 @@ class LongDescription implements \Reflector
|
||||
);
|
||||
for ($i=1, $l = count($this->parsedContents); $i<$l; $i += 2) {
|
||||
$this->parsedContents[$i] = Tag::createInstance(
|
||||
$this->parsedContents[$i]
|
||||
$this->parsedContents[$i],
|
||||
$this->docblock
|
||||
);
|
||||
}
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
|
||||
namespace phpDocumentor\Reflection\DocBlock;
|
||||
|
||||
use phpDocumentor\Reflection\DocBlock;
|
||||
|
||||
/**
|
||||
* Parses a tag definition for a DocBlock.
|
||||
*
|
||||
@@ -36,8 +38,8 @@ class Tag implements \Reflector
|
||||
/** @var int Line number of the tag */
|
||||
protected $line_number = 0;
|
||||
|
||||
/** @var \phpDocumentor\Reflection\DocBlock docblock class */
|
||||
protected $docblock;
|
||||
/** @var DocBlock The DocBlock which this tag belongs to. */
|
||||
protected $docblock = null;
|
||||
|
||||
/**
|
||||
* @var array An array with a tag as a key, and an FQCN to a class that
|
||||
@@ -84,14 +86,17 @@ class Tag implements \Reflector
|
||||
/**
|
||||
* Factory method responsible for instantiating the correct sub type.
|
||||
*
|
||||
* @param string $tag_line The text for this tag, including description.
|
||||
* @param string $tag_line The text for this tag, including description.
|
||||
* @param DocBlock $docblock The DocBlock which this tag belongs to.
|
||||
*
|
||||
* @throws \InvalidArgumentException if an invalid tag line was presented.
|
||||
*
|
||||
* @return \phpDocumentor\Reflection\DocBlock\Tag
|
||||
* @return static A new tag object.
|
||||
*/
|
||||
final public static function createInstance($tag_line)
|
||||
{
|
||||
final public static function createInstance(
|
||||
$tag_line,
|
||||
DocBlock $docblock = null
|
||||
) {
|
||||
if (!preg_match(
|
||||
'/^@([\w\-\_\\\\]+)(?:\s*([^\s].*)|$)?/us',
|
||||
$tag_line,
|
||||
@@ -106,10 +111,15 @@ class Tag implements \Reflector
|
||||
$handler = self::$tagHandlerMappings[$matches[1]];
|
||||
return new $handler(
|
||||
$matches[1],
|
||||
isset($matches[2]) ? $matches[2] : ''
|
||||
isset($matches[2]) ? $matches[2] : '',
|
||||
$docblock
|
||||
);
|
||||
}
|
||||
return new self($matches[1], isset($matches[2]) ? $matches[2] : '');
|
||||
return new self(
|
||||
$matches[1],
|
||||
isset($matches[2]) ? $matches[2] : '',
|
||||
$docblock
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -147,14 +157,16 @@ class Tag implements \Reflector
|
||||
/**
|
||||
* Parses a tag and populates the member variables.
|
||||
*
|
||||
* @param string $type Name of the tag.
|
||||
* @param string $content The contents of the given tag.
|
||||
* @param string $type Name of the tag.
|
||||
* @param string $content The contents of the given tag.
|
||||
* @param DocBlock $docblock The DocBlock which this tag belongs to.
|
||||
*/
|
||||
public function __construct($type, $content)
|
||||
public function __construct($type, $content, DocBlock $docblock = null)
|
||||
{
|
||||
$this->tag = $type;
|
||||
$this->content = $content;
|
||||
$this->description = $content;
|
||||
$this->description = trim($content);
|
||||
$this->docblock = $docblock;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -196,7 +208,7 @@ class Tag implements \Reflector
|
||||
public function getParsedDescription()
|
||||
{
|
||||
if (null === $this->parsedDescription) {
|
||||
$description = new LongDescription($this->description);
|
||||
$description = new Description($this->description, $this->docblock);
|
||||
$this->parsedDescription = $description->getParsedContents();
|
||||
}
|
||||
return $this->parsedDescription;
|
||||
@@ -224,20 +236,6 @@ class Tag implements \Reflector
|
||||
return $this->line_number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inject the docblock class
|
||||
*
|
||||
* This exposes some common functionality contained in the docblock abstract.
|
||||
*
|
||||
* @param object $docblock Object containing the DocBlock.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setDocBlock($docblock)
|
||||
{
|
||||
$this->docblock = $docblock;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a string representation of this object.
|
||||
*
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
namespace phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
use phpDocumentor\Reflection\DocBlock;
|
||||
use phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
/**
|
||||
@@ -32,13 +33,18 @@ class AuthorTag extends Tag
|
||||
/**
|
||||
* Parses a tag and populates the member variables.
|
||||
*
|
||||
* @param string $type Tag identifier for this tag (should be 'author').
|
||||
* @param string $content The contents of the given tag.
|
||||
* @param string $type Tag identifier for this tag (should be 'author').
|
||||
* @param string $content Contents for this tag.
|
||||
* @param DocBlock $docblock The DocBlock which this tag belongs to.
|
||||
*/
|
||||
public function __construct($type, $content)
|
||||
public function __construct($type, $content, DocBlock $docblock = null)
|
||||
{
|
||||
parent::__construct($type, $content);
|
||||
if (preg_match('/^([^\<]*)(\<([^\>]*)\>)?$/', $content, $matches)) {
|
||||
parent::__construct($type, $content, $docblock);
|
||||
if (preg_match(
|
||||
'/^([^\<]*)(\<([^\>]*)\>)?$/',
|
||||
$this->description,
|
||||
$matches
|
||||
)) {
|
||||
$this->name = trim($matches[1]);
|
||||
if (isset($matches[3])) {
|
||||
$this->email = trim($matches[3]);
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
namespace phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
use phpDocumentor\Reflection\DocBlock;
|
||||
use phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
/**
|
||||
@@ -29,13 +30,14 @@ class LinkTag extends Tag
|
||||
/**
|
||||
* Parses a tag and populates the member variables.
|
||||
*
|
||||
* @param string $type Tag identifier for this tag (should be 'link').
|
||||
* @param string $content The contents of the given tag.
|
||||
* @param string $type Tag identifier for this tag (should be 'link').
|
||||
* @param string $content Contents for this tag.
|
||||
* @param DocBlock $docblock The DocBlock which this tag belongs to.
|
||||
*/
|
||||
public function __construct($type, $content)
|
||||
public function __construct($type, $content, DocBlock $docblock = null)
|
||||
{
|
||||
$this->tag = $type;
|
||||
$pieces = explode(' ', $content);
|
||||
parent::__construct($type, $content, $docblock);
|
||||
$pieces = explode(' ', $this->description);
|
||||
|
||||
if (count($pieces) > 1) {
|
||||
$this->link = array_shift($pieces);
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
|
||||
namespace phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
use phpDocumentor\Reflection\DocBlock;
|
||||
use phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
/**
|
||||
* Reflection class for a @method in a Docblock.
|
||||
*
|
||||
@@ -31,13 +34,13 @@ class MethodTag extends ReturnTag
|
||||
/**
|
||||
* Parses a tag and populates the member variables.
|
||||
*
|
||||
* @param string $type Tag identifier for this tag (should be 'method').
|
||||
* @param string $content The contents of the given tag.
|
||||
* @param string $type Tag identifier for this tag (should be 'method').
|
||||
* @param string $content Contents for this tag.
|
||||
* @param DocBlock $docblock The DocBlock which this tag belongs to.
|
||||
*/
|
||||
public function __construct($type, $content)
|
||||
public function __construct($type, $content, DocBlock $docblock = null)
|
||||
{
|
||||
$this->tag = $type;
|
||||
$this->content = $content;
|
||||
Tag::__construct($type, $content, $docblock);
|
||||
|
||||
$matches = array();
|
||||
// 1. none or more whitespace
|
||||
@@ -51,7 +54,7 @@ class MethodTag extends ReturnTag
|
||||
if (preg_match(
|
||||
'/^[\s]*(?:([\w\|_\\\\]+)[\s]+)?(?:[\w_]+\(\)[\s]+)?([\w\|_\\\\]+)'
|
||||
.'\(([^\)]*)\)[\s]*(.*)/u',
|
||||
$content,
|
||||
$this->description,
|
||||
$matches
|
||||
)) {
|
||||
list(
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
|
||||
namespace phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
use phpDocumentor\Reflection\DocBlock;
|
||||
use phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
/**
|
||||
* Reflection class for a @param tag in a Docblock.
|
||||
*
|
||||
@@ -29,16 +32,16 @@ class ParamTag extends ReturnTag
|
||||
/**
|
||||
* Parses a tag and populates the member variables.
|
||||
*
|
||||
* @param string $type Tag identifier for this tag (should be 'param').
|
||||
* @param string $content Contents for this tag.
|
||||
* @param string $type Tag identifier for this tag (should be 'param').
|
||||
* @param string $content Contents for this tag.
|
||||
* @param DocBlock $docblock The DocBlock which this tag belongs to.
|
||||
*/
|
||||
public function __construct($type, $content)
|
||||
public function __construct($type, $content, DocBlock $docblock = null)
|
||||
{
|
||||
$this->tag = $type;
|
||||
$this->content = $content;
|
||||
Tag::__construct($type, $content, $docblock);
|
||||
$content = preg_split(
|
||||
'/(\s+)/u',
|
||||
trim($content),
|
||||
$this->description,
|
||||
3,
|
||||
PREG_SPLIT_DELIM_CAPTURE
|
||||
);
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
namespace phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
use phpDocumentor\Reflection\DocBlock;
|
||||
use phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
/**
|
||||
@@ -29,15 +30,14 @@ class ReturnTag extends Tag
|
||||
/**
|
||||
* Parses a tag and populates the member variables.
|
||||
*
|
||||
* @param string $type Tag identifier for this tag (should be 'return').
|
||||
* @param string $content Contents for this tag.
|
||||
* @param string $type Tag identifier for this tag (should be 'return').
|
||||
* @param string $content Contents for this tag.
|
||||
* @param DocBlock $docblock The DocBlock which this tag belongs to.
|
||||
*/
|
||||
public function __construct($type, $content)
|
||||
public function __construct($type, $content, DocBlock $docblock = null)
|
||||
{
|
||||
$this->tag = $type;
|
||||
$this->content = $content;
|
||||
|
||||
$content = preg_split('/[\ \t]+/u', trim($content), 2);
|
||||
parent::__construct($type, $content, $docblock);
|
||||
$content = preg_split('/[\ \t]+/u', $this->description, 2);
|
||||
|
||||
// any output is considered a type
|
||||
$this->type = array_shift($content);
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
namespace phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
use phpDocumentor\Reflection\DocBlock;
|
||||
use phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
/**
|
||||
@@ -29,13 +30,13 @@ class SeeTag extends Tag
|
||||
/**
|
||||
* Parses a tag and populates the member variables.
|
||||
*
|
||||
* @param string $type Tag identifier for this tag (should be 'see').
|
||||
* @param string $content Contents for this tag.
|
||||
* @param string $type Tag identifier for this tag (should be 'see').
|
||||
* @param string $content Contents for this tag.
|
||||
* @param DocBlock $docblock The DocBlock which this tag belongs to.
|
||||
*/
|
||||
public function __construct($type, $content)
|
||||
public function __construct($type, $content, DocBlock $docblock = null)
|
||||
{
|
||||
$this->tag = $type;
|
||||
$this->content = $content;
|
||||
parent::__construct($type, $content, $docblock);
|
||||
$content = preg_split('/\s+/u', $content);
|
||||
|
||||
// any output is considered a type
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
|
||||
namespace phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
use phpDocumentor\Reflection\DocBlock;
|
||||
use phpDocumentor\Reflection\DocBlock\Tag;
|
||||
|
||||
/**
|
||||
* Reflection class for a @var tag in a Docblock.
|
||||
*
|
||||
@@ -24,14 +27,14 @@ class VarTag extends ParamTag
|
||||
/**
|
||||
* Parses a tag and populates the member variables.
|
||||
*
|
||||
* @param string $type Tag identifier for this tag (should be 'var').
|
||||
* @param string $content Contents for this tag.
|
||||
* @param string $type Tag identifier for this tag (should be 'var').
|
||||
* @param string $content Contents for this tag.
|
||||
* @param DocBlock $docblock The DocBlock which this tag belongs to.
|
||||
*/
|
||||
public function __construct($type, $content)
|
||||
public function __construct($type, $content, DocBlock $docblock = null)
|
||||
{
|
||||
$this->tag = $type;
|
||||
$this->content = $content;
|
||||
$content = preg_split('/\s+/u', $content);
|
||||
Tag::__construct($type, $content, $docblock);
|
||||
$content = preg_split('/\s+/u', $this->description);
|
||||
|
||||
if (count($content) == 0) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user