PageRenderTime 28ms CodeModel.GetById 23ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php

https://bitbucket.org/alan_cordova/api-sb-map
PHP | 97 lines | 54 code | 12 blank | 31 comment | 2 complexity | 9f948aa2963bd73fa9badee9e53ffc19 MD5 | raw file
 1<?php
 2/**
 3 * This file is part of phpDocumentor.
 4 *
 5 * For the full copyright and license information, please view the LICENSE
 6 * file that was distributed with this source code.
 7 *
 8 * @copyright 2010-2015 Mike van Riel<mike@phpdoc.org>
 9 * @license   http://www.opensource.org/licenses/mit-license.php MIT
10 * @link      http://phpdoc.org
11 */
12
13namespace phpDocumentor\Reflection\DocBlock\Tags;
14
15use phpDocumentor\Reflection\DocBlock\Description;
16use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
17use phpDocumentor\Reflection\Types\Context as TypeContext;
18use Webmozart\Assert\Assert;
19
20/**
21 * Reflection class for a {@}deprecated tag in a Docblock.
22 */
23final class Deprecated extends BaseTag implements Factory\StaticMethod
24{
25    protected $name = 'deprecated';
26
27    /**
28     * PCRE regular expression matching a version vector.
29     * Assumes the "x" modifier.
30     */
31    const REGEX_VECTOR = '(?:
32        # Normal release vectors.
33        \d\S*
34        |
35        # VCS version vectors. Per PHPCS, they are expected to
36        # follow the form of the VCS name, followed by ":", followed
37        # by the version vector itself.
38        # By convention, popular VCSes like CVS, SVN and GIT use "$"
39        # around the actual version vector.
40        [^\s\:]+\:\s*\$[^\$]+\$
41    )';
42
43    /** @var string The version vector. */
44    private $version = '';
45
46    public function __construct($version = null, Description $description = null)
47    {
48        Assert::nullOrStringNotEmpty($version);
49
50        $this->version = $version;
51        $this->description = $description;
52    }
53
54    /**
55     * @return static
56     */
57    public static function create($body, DescriptionFactory $descriptionFactory = null, TypeContext $context = null)
58    {
59        Assert::nullOrString($body);
60        if (empty($body)) {
61            return new static();
62        }
63
64        $matches = [];
65        if (!preg_match('/^(' . self::REGEX_VECTOR . ')\s*(.+)?$/sux', $body, $matches)) {
66            return new static(
67                null,
68                null !== $descriptionFactory ? $descriptionFactory->create($body, $context) : null
69            );
70        }
71
72        return new static(
73            $matches[1],
74            $descriptionFactory->create(isset($matches[2]) ? $matches[2] : '', $context)
75        );
76    }
77
78    /**
79     * Gets the version section of the tag.
80     *
81     * @return string
82     */
83    public function getVersion()
84    {
85        return $this->version;
86    }
87
88    /**
89     * Returns a string representation for this tag.
90     *
91     * @return string
92     */
93    public function __toString()
94    {
95        return $this->version . ($this->description ? ' ' . $this->description->render() : '');
96    }
97}