mirror of
https://github.com/barryvdh/ReflectionDocBlock.git
synced 2026-08-18 01:57:13 +00:00
Added reflections for @version, @since and @deprecated, which separate the version vector (if one is provided) from the description.
This commit is contained in:
@@ -49,6 +49,8 @@ class Tag implements \Reflector
|
|||||||
=> '\phpDocumentor\Reflection\DocBlock\Tag\AuthorTag',
|
=> '\phpDocumentor\Reflection\DocBlock\Tag\AuthorTag',
|
||||||
'covers'
|
'covers'
|
||||||
=> '\phpDocumentor\Reflection\DocBlock\Tag\CoversTag',
|
=> '\phpDocumentor\Reflection\DocBlock\Tag\CoversTag',
|
||||||
|
'deprecated'
|
||||||
|
=> '\phpDocumentor\Reflection\DocBlock\Tag\DeprecatedTag',
|
||||||
'link'
|
'link'
|
||||||
=> '\phpDocumentor\Reflection\DocBlock\Tag\LinkTag',
|
=> '\phpDocumentor\Reflection\DocBlock\Tag\LinkTag',
|
||||||
'method'
|
'method'
|
||||||
@@ -65,6 +67,8 @@ class Tag implements \Reflector
|
|||||||
=> '\phpDocumentor\Reflection\DocBlock\Tag\ReturnTag',
|
=> '\phpDocumentor\Reflection\DocBlock\Tag\ReturnTag',
|
||||||
'see'
|
'see'
|
||||||
=> '\phpDocumentor\Reflection\DocBlock\Tag\SeeTag',
|
=> '\phpDocumentor\Reflection\DocBlock\Tag\SeeTag',
|
||||||
|
'since'
|
||||||
|
=> '\phpDocumentor\Reflection\DocBlock\Tag\SinceTag',
|
||||||
'throw'
|
'throw'
|
||||||
=> '\phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag',
|
=> '\phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag',
|
||||||
'throws'
|
'throws'
|
||||||
@@ -72,7 +76,9 @@ class Tag implements \Reflector
|
|||||||
'uses'
|
'uses'
|
||||||
=> '\phpDocumentor\Reflection\DocBlock\Tag\UsesTag',
|
=> '\phpDocumentor\Reflection\DocBlock\Tag\UsesTag',
|
||||||
'var'
|
'var'
|
||||||
=> '\phpDocumentor\Reflection\DocBlock\Tag\VarTag'
|
=> '\phpDocumentor\Reflection\DocBlock\Tag\VarTag',
|
||||||
|
'version'
|
||||||
|
=> '\phpDocumentor\Reflection\DocBlock\Tag\VersionTag'
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* phpDocumentor
|
||||||
|
*
|
||||||
|
* PHP Version 5.3
|
||||||
|
*
|
||||||
|
* @author Vasil Rangelov <[email protected]>
|
||||||
|
* @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\VersionTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reflection class for a @deprecated tag in a Docblock.
|
||||||
|
*
|
||||||
|
* @author Vasil Rangelov <[email protected]>
|
||||||
|
* @license http://www.opensource.org/licenses/mit-license.php MIT
|
||||||
|
* @link http://phpdoc.org
|
||||||
|
*/
|
||||||
|
class DeprecatedTag extends VersionTag
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* phpDocumentor
|
||||||
|
*
|
||||||
|
* PHP Version 5.3
|
||||||
|
*
|
||||||
|
* @author Vasil Rangelov <[email protected]>
|
||||||
|
* @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\VersionTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reflection class for a @since tag in a Docblock.
|
||||||
|
*
|
||||||
|
* @author Vasil Rangelov <[email protected]>
|
||||||
|
* @license http://www.opensource.org/licenses/mit-license.php MIT
|
||||||
|
* @link http://phpdoc.org
|
||||||
|
*/
|
||||||
|
class SinceTag extends VersionTag
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* phpDocumentor
|
||||||
|
*
|
||||||
|
* PHP Version 5.3
|
||||||
|
*
|
||||||
|
* @author Vasil Rangelov <[email protected]>
|
||||||
|
* @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 @version tag in a Docblock.
|
||||||
|
*
|
||||||
|
* @author Vasil Rangelov <[email protected]>
|
||||||
|
* @license http://www.opensource.org/licenses/mit-license.php MIT
|
||||||
|
* @link http://phpdoc.org
|
||||||
|
*/
|
||||||
|
class VersionTag extends Tag
|
||||||
|
{
|
||||||
|
/** @var string The version vector. */
|
||||||
|
protected $version = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses a tag and populates the member variables.
|
||||||
|
*
|
||||||
|
* @param string $type Tag identifier for this tag (should be 'version').
|
||||||
|
* @param string $content Contents for this tag.
|
||||||
|
*/
|
||||||
|
public function __construct($type, $content)
|
||||||
|
{
|
||||||
|
$this->tag = $type;
|
||||||
|
$this->content = $content;
|
||||||
|
$this->description = trim($content);
|
||||||
|
|
||||||
|
if (preg_match(
|
||||||
|
'/^
|
||||||
|
# The version vector
|
||||||
|
((?:
|
||||||
|
# Normal release vectors.
|
||||||
|
\d\S*
|
||||||
|
|
|
||||||
|
# VCS version vectors. Per PHPCS, they are expected to
|
||||||
|
# follow the form of the VCS name, followed by ":", followed
|
||||||
|
# by the version vector itself.
|
||||||
|
# By convention, popular VCSes like CVS, SVN and GIT use "$"
|
||||||
|
# around the actual version vector.
|
||||||
|
[^\s\:]+\:\s*\$[^\$]+\$
|
||||||
|
))
|
||||||
|
\s*
|
||||||
|
# The description
|
||||||
|
(.+)?
|
||||||
|
$/sux',
|
||||||
|
$this->description,
|
||||||
|
$matches
|
||||||
|
)) {
|
||||||
|
$this->version = $matches[1];
|
||||||
|
$this->description = isset($matches[2]) ? $matches[2] : '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the version section of the tag.
|
||||||
|
*
|
||||||
|
* @return string The version section of the tag.
|
||||||
|
*/
|
||||||
|
public function getVersion()
|
||||||
|
{
|
||||||
|
return $this->version;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* phpDocumentor Deprecated Tag Test
|
||||||
|
*
|
||||||
|
* PHP version 5.3
|
||||||
|
*
|
||||||
|
* @author Vasil Rangelov <[email protected]>
|
||||||
|
* @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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\DeprecatedTag
|
||||||
|
*
|
||||||
|
* @author Vasil Rangelov <[email protected]>
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
class DeprecatedTagTest extends \PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\LinkTag can create
|
||||||
|
* a link for the @deprecated doc block.
|
||||||
|
*
|
||||||
|
* @param string $type
|
||||||
|
* @param string $content
|
||||||
|
* @param string $exContent
|
||||||
|
* @param string $exDescription
|
||||||
|
* @param string $exVersion
|
||||||
|
*
|
||||||
|
* @covers \phpDocumentor\Reflection\DocBlock\Tag\DeprecatedTag
|
||||||
|
* @dataProvider provideDataForConstuctor
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testConstructorParesInputsIntoCorrectFields(
|
||||||
|
$type,
|
||||||
|
$content,
|
||||||
|
$exContent,
|
||||||
|
$exDescription,
|
||||||
|
$exVersion
|
||||||
|
) {
|
||||||
|
$tag = new DeprecatedTag($type, $content);
|
||||||
|
|
||||||
|
$this->assertEquals($type, $tag->getName());
|
||||||
|
$this->assertEquals($exContent, $tag->getContent());
|
||||||
|
$this->assertEquals($exDescription, $tag->getDescription());
|
||||||
|
$this->assertEquals($exVersion, $tag->getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data provider for testConstructorParesInputsIntoCorrectFields
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function provideDataForConstuctor()
|
||||||
|
{
|
||||||
|
// $type, $content, $exContent, $exDescription, $exVersion
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
'deprecated',
|
||||||
|
'1.0 First release.',
|
||||||
|
'1.0 First release.',
|
||||||
|
'First release.',
|
||||||
|
'1.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'deprecated',
|
||||||
|
"1.0\nFirst release.",
|
||||||
|
"1.0\nFirst release.",
|
||||||
|
'First release.',
|
||||||
|
'1.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'deprecated',
|
||||||
|
"1.0\nFirst\nrelease.",
|
||||||
|
"1.0\nFirst\nrelease.",
|
||||||
|
"First\nrelease.",
|
||||||
|
'1.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'deprecated',
|
||||||
|
'Unfinished release',
|
||||||
|
'Unfinished release',
|
||||||
|
'Unfinished release',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'deprecated',
|
||||||
|
'1.0',
|
||||||
|
'1.0',
|
||||||
|
'',
|
||||||
|
'1.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'deprecated',
|
||||||
|
'GIT: $Id$',
|
||||||
|
'GIT: $Id$',
|
||||||
|
'',
|
||||||
|
'GIT: $Id$'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'deprecated',
|
||||||
|
'GIT: $Id$ Dev build',
|
||||||
|
'GIT: $Id$ Dev build',
|
||||||
|
'Dev build',
|
||||||
|
'GIT: $Id$'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* phpDocumentor Since Tag Test
|
||||||
|
*
|
||||||
|
* PHP version 5.3
|
||||||
|
*
|
||||||
|
* @author Vasil Rangelov <[email protected]>
|
||||||
|
* @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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\SinceTag
|
||||||
|
*
|
||||||
|
* @author Vasil Rangelov <[email protected]>
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
class SinceTagTest extends \PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\LinkTag can create
|
||||||
|
* a link for the @since doc block.
|
||||||
|
*
|
||||||
|
* @param string $type
|
||||||
|
* @param string $content
|
||||||
|
* @param string $exContent
|
||||||
|
* @param string $exDescription
|
||||||
|
* @param string $exVersion
|
||||||
|
*
|
||||||
|
* @covers \phpDocumentor\Reflection\DocBlock\Tag\SinceTag
|
||||||
|
* @dataProvider provideDataForConstuctor
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testConstructorParesInputsIntoCorrectFields(
|
||||||
|
$type,
|
||||||
|
$content,
|
||||||
|
$exContent,
|
||||||
|
$exDescription,
|
||||||
|
$exVersion
|
||||||
|
) {
|
||||||
|
$tag = new SinceTag($type, $content);
|
||||||
|
|
||||||
|
$this->assertEquals($type, $tag->getName());
|
||||||
|
$this->assertEquals($exContent, $tag->getContent());
|
||||||
|
$this->assertEquals($exDescription, $tag->getDescription());
|
||||||
|
$this->assertEquals($exVersion, $tag->getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data provider for testConstructorParesInputsIntoCorrectFields
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function provideDataForConstuctor()
|
||||||
|
{
|
||||||
|
// $type, $content, $exContent, $exDescription, $exVersion
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
'since',
|
||||||
|
'1.0 First release.',
|
||||||
|
'1.0 First release.',
|
||||||
|
'First release.',
|
||||||
|
'1.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'since',
|
||||||
|
"1.0\nFirst release.",
|
||||||
|
"1.0\nFirst release.",
|
||||||
|
'First release.',
|
||||||
|
'1.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'since',
|
||||||
|
"1.0\nFirst\nrelease.",
|
||||||
|
"1.0\nFirst\nrelease.",
|
||||||
|
"First\nrelease.",
|
||||||
|
'1.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'since',
|
||||||
|
'Unfinished release',
|
||||||
|
'Unfinished release',
|
||||||
|
'Unfinished release',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'since',
|
||||||
|
'1.0',
|
||||||
|
'1.0',
|
||||||
|
'',
|
||||||
|
'1.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'since',
|
||||||
|
'GIT: $Id$',
|
||||||
|
'GIT: $Id$',
|
||||||
|
'',
|
||||||
|
'GIT: $Id$'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'since',
|
||||||
|
'GIT: $Id$ Dev build',
|
||||||
|
'GIT: $Id$ Dev build',
|
||||||
|
'Dev build',
|
||||||
|
'GIT: $Id$'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* phpDocumentor Version Tag Test
|
||||||
|
*
|
||||||
|
* PHP version 5.3
|
||||||
|
*
|
||||||
|
* @author Vasil Rangelov <[email protected]>
|
||||||
|
* @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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\VersionTag
|
||||||
|
*
|
||||||
|
* @author Vasil Rangelov <[email protected]>
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
class VersionTagTest extends \PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\LinkTag can create
|
||||||
|
* a link for the @version doc block.
|
||||||
|
*
|
||||||
|
* @param string $type
|
||||||
|
* @param string $content
|
||||||
|
* @param string $exContent
|
||||||
|
* @param string $exDescription
|
||||||
|
* @param string $exVersion
|
||||||
|
*
|
||||||
|
* @covers \phpDocumentor\Reflection\DocBlock\Tag\VersionTag::__construct
|
||||||
|
* @covers \phpDocumentor\Reflection\DocBlock\Tag\VersionTag::getVersion
|
||||||
|
* @dataProvider provideDataForConstuctor
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testConstructorParesInputsIntoCorrectFields(
|
||||||
|
$type,
|
||||||
|
$content,
|
||||||
|
$exContent,
|
||||||
|
$exDescription,
|
||||||
|
$exVersion
|
||||||
|
) {
|
||||||
|
$tag = new VersionTag($type, $content);
|
||||||
|
|
||||||
|
$this->assertEquals($type, $tag->getName());
|
||||||
|
$this->assertEquals($exContent, $tag->getContent());
|
||||||
|
$this->assertEquals($exDescription, $tag->getDescription());
|
||||||
|
$this->assertEquals($exVersion, $tag->getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data provider for testConstructorParesInputsIntoCorrectFields
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function provideDataForConstuctor()
|
||||||
|
{
|
||||||
|
// $type, $content, $exContent, $exDescription, $exVersion
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
'version',
|
||||||
|
'1.0 First release.',
|
||||||
|
'1.0 First release.',
|
||||||
|
'First release.',
|
||||||
|
'1.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'version',
|
||||||
|
"1.0\nFirst release.",
|
||||||
|
"1.0\nFirst release.",
|
||||||
|
'First release.',
|
||||||
|
'1.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'version',
|
||||||
|
"1.0\nFirst\nrelease.",
|
||||||
|
"1.0\nFirst\nrelease.",
|
||||||
|
"First\nrelease.",
|
||||||
|
'1.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'version',
|
||||||
|
'Unfinished release',
|
||||||
|
'Unfinished release',
|
||||||
|
'Unfinished release',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'version',
|
||||||
|
'1.0',
|
||||||
|
'1.0',
|
||||||
|
'',
|
||||||
|
'1.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'version',
|
||||||
|
'GIT: $Id$',
|
||||||
|
'GIT: $Id$',
|
||||||
|
'',
|
||||||
|
'GIT: $Id$'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'version',
|
||||||
|
'GIT: $Id$ Dev build',
|
||||||
|
'GIT: $Id$ Dev build',
|
||||||
|
'Dev build',
|
||||||
|
'GIT: $Id$'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user