Compare commits

..
57 Commits
Author SHA1 Message Date
Barry vd. Heuvel 64165bd4ba Merge pull request #1 from JeppeKnockaert/allow-deleting-tags-in-docblocks
Allow deleting tags in DocBlocks
2018-10-25 21:09:52 +02:00
Jeppe Knockaert 9b08619fbd Allow deleting tags in DocBlocks 2018-10-23 15:38:27 +02:00
Barry vd. Heuvel 3dcbd98b5d Update namespace 2016-06-13 21:28:20 +02:00
Barry vd. Heuvel d411a2bc7e Merge branch 'release/2.x' of https://github.com/phpDocumentor/ReflectionDocBlock 2016-06-13 21:28:05 +02:00
Mike van Riel e6a969a640 Merge pull request #67 from mbed67/fix-bug-in-collection
fix for bug #1672 in phpDocumentor2
2016-01-25 09:17:30 +01:00
Marieke Bednarczyk 708c2c9253 fix for bug #1672 in phpDocumentor2
When dealing with inline @see or @link tags and having a relative method or property type
like LinkDescriptor::setLink() and a namespace alias like phpDocumentor\Descriptor\Tag\LinkDescriptor
Collection::expand() was checking if LinkDescriptor::setLink() could be found in the namespace aliases.
This would never be true.
In this fix, the method or type (for instance ::setLink()) part is removed for comparison
and later re-added when generating the full name
2015-12-13 15:52:57 +01:00
Mike van Riel d68dbdc53d Disable failing test before tagging 2015-02-03 13:10:50 +01:00
Mike van Riel fb5dfa51d4 Merge pull request #41 from cebe/patch-1
Create LICENSE
2015-02-03 07:38:02 +01:00
Carsten Brandt ae02953010 Create LICENSE
According to [composer.json](https://github.com/phpDocumentor/ReflectionDocBlock/blob/master/composer.json#L4) it should be MIT.

fixes #40
2014-12-19 23:13:47 +01:00
Chuck Burgess fd0ac20074 Merge pull request #39 from mvriel/feature/phpDocumentor2/42
Add support for DocBlock template markers
2014-09-02 09:26:20 -05:00
Mike van Riel 21feb61eb5 Add missing DocBlock (info). 2014-08-30 11:16:26 +02:00
Mike van Riel 280a3ce56d Add support for DocBlock template markers
DocBlocks may start with #@+ and #@- to indicate that they are (the start) of a DocBlock
template or the end of a template.

In this commit I have changed the way a DocBlock is parsed to interpret this information
and added tests to show for it. In addition I have added more comments to the Regular
Expression responsible for splitting a DocBlock to show the business rules more clearly.

This is the first step in implementing https://github.com/phpDocumentor/phpDocumentor2/issues/42.
2014-08-30 11:08:15 +02:00
Mike van Riel 0604d62704 Merge pull request #38 from GrahamCampbell/stuff
Composer And Travis Updates
2014-08-21 23:05:07 +02:00
Graham Campbell a66d783afd Travis improvements 2014-08-21 13:02:49 +01:00
Graham Campbell 84de81c009 Composer updates 2014-08-21 13:02:41 +01:00
Mike van Riel 38743b6779 Merge pull request #37 from alexkn/fix-error-display
Remove Error display at MethodTag
2014-08-09 12:27:07 +02:00
Alexander Knöbel 0d52cb6389 Remove Error display at MethodTag 2014-08-09 12:09:15 +02:00
Mike van Riel 2281569ebc Merge pull request #33 from Nyholm/patch-1
Added PHP 5.6 and HHVM to travis.yml
2014-07-19 08:49:33 +02:00
Tobias Nyholm e0faa7f04f Added hhvm-nightly 2014-07-09 14:15:10 +02:00
Tobias Nyholm 39a08094f1 Added PHP 5.6 and HHVM to travis.yml 2014-07-09 12:05:21 +02:00
Mike van Riel 07b195e1ee Merge branch 'master' of github.com:phpDocumentor/ReflectionDocBlock 2014-04-26 12:10:44 +02:00
Mike van Riel 0bca477a34 Implement support for Variadic arguments
Fixes https://github.com/phpDocumentor/phpDocumentor2/issues/629, in
this commit we add support for recognizing and displaying variadic
arguments as described in the Variadics RFC on Internals
(https://wiki.php.net/rfc/variadics).

This adds support for describing Variadics even before PHP 5.6, where
this feature is planned.
2014-03-28 10:21:30 +01:00
Mike van Riel 66a7d3bf31 Merge pull request #31 from siad007/patch-1
Fixed method call.
2014-03-16 13:31:01 +01:00
Siad Ardroumli 2331fc92f6 Fixed method call.
Related to https://github.com/phpDocumentor/phpDocumentor2/pull/1145
2014-03-16 13:23:37 +01:00
Mike van Riel b1922e00de Merge pull request #30 from cebe/preserve-newlines
Preserve newlines in docblock tags
2014-03-01 11:01:55 +01:00
Carsten Brandt 53ba484043 Preserve newlines in docblock tags
This is especially important when using markdown.
Adding a blank line between text introduces a new paragraph.
Current implementation will result in all text staying in one paragraph
and also other elements like lists and code do not get recognized in
most cases.
2014-02-28 17:17:48 +01:00
Mike van Riel cfb3ebea55 Add support for Parsedown as a markdown parser 2013-12-05 09:16:55 +01:00
Vasil Rangelov c33820b04b Merge pull request #25 from barryvdh/patch-1
Markdown is not required, so move to suggest
2013-08-08 09:31:39 -07:00
Barry vd. Heuvel 280c4a1d44 Markdown is not required, so move to suggest
Markdown is only used once and a check is in place to see if the markdown classes exists. So perhaps it is better to move this to suggest instead of require, so the people who don't need it, don't have to download it.
2013-08-08 18:25:04 +02:00
Vasil Rangelov 66ae84e9d7 Merge pull request #24 from tommygnr/travis-5.5
Enable travis builds on php5.5
2013-08-07 04:04:22 -07:00
Tom Corrigan 3023fb2220 Enable travis builds on php5.5 2013-08-07 13:08:11 +10:00
Mike van Riel a9b6edf3ce Merge pull request #23 from tommygnr/patch-1
Add a branch alias
2013-08-01 12:16:50 -07:00
Tom Corrigan f3d1a28bf7 Add a branch alias
This will enable improved version constraints in phpdocumentor/reflection
2013-08-02 02:40:14 +10:00
Barry vd. Heuvel fd9e6bd26d Move around 2013-06-08 23:04:47 +02:00
Barry vd. Heuvel d5e4b2ec73 Also check if it is not already absolute 2013-06-08 23:02:34 +02:00
Barry vd. Heuvel bae8be0dcd Test for false relative paths
Closure -> \Closure etc
2013-06-08 22:53:54 +02:00
Barry vd. Heuvel 3a5d30e027 Use parsed types for content 2013-06-08 22:37:52 +02:00
Barry vd. Heuvel d2414cd3dc Add setType and addType 2013-06-08 22:37:36 +02:00
Barry vd. Heuvel 070b13745a Correct namespace 2013-06-08 12:58:42 +02:00
Barry vd. Heuvel df7807cd73 Add markdown to suggest instead of require 2013-06-08 12:52:45 +02:00
Barry vd. Heuvel b07e3c36b7 Change namespace 2013-06-08 12:45:35 +02:00
Barry vd. Heuvel 163dd7877e Add __toString() methods for Description and Tag
And let the Serializer make use of the (string) $tag
2013-06-08 12:40:01 +02:00
Vasil Rangelov 6d705c1a0f Merge pull request #22 from barryvdh/tostring
Add __toString() methods for Description and Tag
2013-05-27 10:54:22 -07:00
Barry vd. Heuvel ab0bcb8d31 Add __toString() methods for Description and Tag
And let the Serializer make use of the (string) $tag
2013-05-27 18:16:15 +02:00
Vasil Rangelov ac6e37af97 Added "{}" around all double quoted variables, for readability's sake;
Performance improvement in Serializer - wrap length is calculated once during the text portion only. Tags reuse the result. Also no "prefix" adding in tags - the name is simply added before wrapping.
2013-05-27 02:04:23 +03:00
Vasil Rangelov 4a7affe15b Minor doc fix at Serializer.php. 2013-05-27 01:31:58 +03:00
Vasil Rangelov b7797b4e1a Added getters for Serializer options;
Swapped the indent and indent string options at Serializer's constructor;
Renamed Serializer::setIndentFirstLine() to setIsFirstLineIndented() in accordance with the getter (PHPMD fix);
Line length is now ACTUALLY line length, i.e. it takes the indentation into account, and is applied to tags as well;
Fixed ReturnTag::setContent() to set "types" to NULL;
A lot of doc and CS fixes at Serializer.php.
2013-05-27 01:27:07 +03:00
Vasil Rangelov 8b529636bf Merge pull request #20 from barryvdh/master
Export docblock comment
2013-05-26 13:55:34 -07:00
Barry vd. Heuvel 2e9fd6a2e8 Revert setType
Doesn't really belong to this PR
2013-05-26 22:36:53 +02:00
Barry vd. Heuvel cbb14bab1e Move serializer to seperate class 2013-05-26 22:36:31 +02:00
Barry vd. Heuvel d57128e65c Export DocBlock & full description
Add get/set for entire description, and create a docblock comment, based
on the description/tags
2013-05-26 21:17:09 +02:00
Barry vd. Heuvel d9c0928243 Set return type 2013-05-26 21:16:30 +02:00
Vasil Rangelov 63c9de4e8b Added support for static method declarations at MethodTag and according unit tests.
Fixed MethodTag::getContent() to actually return the content as opposed to $this;
2013-05-16 22:17:15 +03:00
Vasil Rangelov 76619d4a16 Adjusted Unit tests and docs to match the latest dot separation. 2013-04-16 19:25:40 +03:00
Vasil Rangelov 47d3f86c53 Fixed the dot separation to match the latest PSR
(see phpDocumentor/phpDocumentor2#797)
2013-04-16 17:22:15 +03:00
Mike van Riel cfb104b8c8 Merge pull request #17 from joncave/cotnent-typo
Fix typo in "cotnent"
2013-02-01 10:47:35 -08:00
Jon Cave 5c51ccf185 Fix typo in "cotnent" 2013-02-01 18:08:30 +00:00
48 changed files with 1429 additions and 463 deletions
+1 -1
View File
@@ -1,2 +1,2 @@
.idea .idea
vendor vendor
+13 -4
View File
@@ -3,17 +3,26 @@ php:
- 5.3.3 - 5.3.3
- 5.3 - 5.3
- 5.4 - 5.4
- 5.5
- 5.6
- hhvm
- hhvm-nightly
matrix:
allow_failures:
- php: hhvm
- php: hhvm-nightly
script: script:
- vendor/phpunit/phpunit/composer/bin/phpunit - vendor/bin/phpunit
before_script: before_script:
- sudo apt-get -qq update > /dev/null - sudo apt-get -qq update > /dev/null
- phpenv rehash > /dev/null - phpenv rehash > /dev/null
- composer selfupdate --quiet - composer selfupdate --quiet
- composer install --dev - composer install --no-interaction --prefer-source --dev
- vendor/phpunit/phpunit/composer/bin/phpunit - vendor/bin/phpunit
- composer update --dev - composer update --no-interaction --prefer-source --dev
notifications: notifications:
irc: "irc.freenode.org#phpdocumentor" irc: "irc.freenode.org#phpdocumentor"
+21
View File
@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2010 Mike van Riel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
+13 -5
View File
@@ -1,18 +1,26 @@
{ {
"name": "phpdocumentor/reflection-docblock", "name": "barryvdh/reflection-docblock",
"type": "library", "type": "library",
"license": "MIT", "license": "MIT",
"authors": [ "authors": [
{"name": "Mike van Riel", "email": "[email protected]"} {"name": "Mike van Riel", "email": "[email protected]"}
], ],
"require": { "require": {
"php": ">=5.3.3", "php": ">=5.3.3"
"dflydev/markdown": "1.0.*"
}, },
"autoload": { "autoload": {
"psr-0": {"phpDocumentor": ["src/"]} "psr-0": {"Barryvdh": ["src/"]}
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "3.7.*@stable" "phpunit/phpunit": "~4.0,<4.5"
},
"suggest": {
"dflydev/markdown": "~1.0",
"erusev/parsedown": "~1.0"
},
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
} }
} }
Generated
+555 -166
View File
@@ -1,99 +1,110 @@
{ {
"hash": "c6115c20a4a284f6ca14e676e788b4d3", "_readme": [
"packages": [ "This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "deff4b2e029043b60cdbe896c5b18d6d",
"content-hash": "7b23fd3607c50c95f9d65e81785cf289",
"packages": [],
"packages-dev": [
{ {
"name": "dflydev/markdown", "name": "doctrine/instantiator",
"version": "v1.0.2", "version": "1.0.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/dflydev/dflydev-markdown.git", "url": "https://github.com/doctrine/instantiator.git",
"reference": "v1.0.2" "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://github.com/dflydev/dflydev-markdown/zipball/v1.0.2", "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
"reference": "v1.0.2", "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3" "php": ">=5.3,<8.0-DEV"
},
"require-dev": {
"athletic/athletic": "~0.1.8",
"ext-pdo": "*",
"ext-phar": "*",
"phpunit/phpunit": "~4.0",
"squizlabs/php_codesniffer": "~2.0"
}, },
"time": "2012-01-15 19:36:37",
"type": "library", "type": "library",
"installation-source": "dist", "extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": { "autoload": {
"psr-0": { "psr-4": {
"dflydev\\markdown": "src" "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
} }
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
"New BSD License" "MIT"
], ],
"authors": [ "authors": [
{ {
"name": "Dragonfly Development Inc.", "name": "Marco Pivetta",
"email": "info@dflydev.com", "email": "ocramius@gmail.com",
"homepage": "http://dflydev.com" "homepage": "http://ocramius.github.com/"
},
{
"name": "Beau Simensen",
"email": "[email protected]",
"homepage": "http://beausimensen.com"
},
{
"name": "Michel Fortin",
"homepage": "http://michelf.com"
},
{
"name": "John Gruber",
"homepage": "http://daringfireball.net"
} }
], ],
"description": "PHP Markdown & Extra", "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
"homepage": "http://github.com/dflydev/dflydev-markdown", "homepage": "https://github.com/doctrine/instantiator",
"keywords": [ "keywords": [
"markdown" "constructor",
] "instantiate"
} ],
], "time": "2015-06-14 21:17:01"
"packages-dev": [ },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "1.2.7", "version": "2.2.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "git://github.com/sebastianbergmann/php-code-coverage.git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "1.2.7" "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://github.com/sebastianbergmann/php-code-coverage/archive/1.2.7.zip", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
"reference": "1.2.7", "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.3", "php": ">=5.3.3",
"phpunit/php-file-iterator": ">=1.3.0@stable", "phpunit/php-file-iterator": "~1.3",
"phpunit/php-token-stream": ">=1.1.3@stable", "phpunit/php-text-template": "~1.2",
"phpunit/php-text-template": ">=1.1.1@stable" "phpunit/php-token-stream": "~1.3",
"sebastian/environment": "^1.3.2",
"sebastian/version": "~1.0"
},
"require-dev": {
"ext-xdebug": ">=2.1.4",
"phpunit/phpunit": "~4"
}, },
"suggest": { "suggest": {
"ext-dom": "*", "ext-dom": "*",
"ext-xdebug": ">=2.0.5" "ext-xdebug": ">=2.2.1",
"ext-xmlwriter": "*"
}, },
"time": "2012-12-02 14:54:55",
"type": "library", "type": "library",
"installation-source": "dist", "extra": {
"branch-alias": {
"dev-master": "2.2.x-dev"
}
},
"autoload": { "autoload": {
"classmap": [ "classmap": [
"PHP/" "src/"
] ]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"include-path": [
""
],
"license": [ "license": [
"BSD-3-Clause" "BSD-3-Clause"
], ],
@@ -107,31 +118,30 @@
"description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
"homepage": "https://github.com/sebastianbergmann/php-code-coverage", "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
"keywords": [ "keywords": [
"testing",
"coverage", "coverage",
"testing",
"xunit" "xunit"
] ],
"time": "2015-10-06 15:47:00"
}, },
{ {
"name": "phpunit/php-file-iterator", "name": "phpunit/php-file-iterator",
"version": "1.3.3", "version": "1.3.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "git://github.com/sebastianbergmann/php-file-iterator.git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
"reference": "1.3.3" "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://github.com/sebastianbergmann/php-file-iterator/zipball/1.3.3", "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb",
"reference": "1.3.3", "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.3" "php": ">=5.3.3"
}, },
"time": "2012-10-11 04:44:38",
"type": "library", "type": "library",
"installation-source": "dist",
"autoload": { "autoload": {
"classmap": [ "classmap": [
"File/" "File/"
@@ -152,48 +162,44 @@
} }
], ],
"description": "FilterIterator implementation that filters files based on a list of suffixes.", "description": "FilterIterator implementation that filters files based on a list of suffixes.",
"homepage": "http://www.phpunit.de/", "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
"keywords": [ "keywords": [
"filesystem", "filesystem",
"iterator" "iterator"
] ],
"time": "2013-10-10 15:34:57"
}, },
{ {
"name": "phpunit/php-text-template", "name": "phpunit/php-text-template",
"version": "1.1.4", "version": "1.2.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "git://github.com/sebastianbergmann/php-text-template.git", "url": "https://github.com/sebastianbergmann/php-text-template.git",
"reference": "1.1.4" "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://github.com/sebastianbergmann/php-text-template/zipball/1.1.4", "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
"reference": "1.1.4", "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.3" "php": ">=5.3.3"
}, },
"time": "2012-10-31 11:15:28",
"type": "library", "type": "library",
"installation-source": "dist",
"autoload": { "autoload": {
"classmap": [ "classmap": [
"Text/" "src/"
] ]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"include-path": [
""
],
"license": [ "license": [
"BSD-3-Clause" "BSD-3-Clause"
], ],
"authors": [ "authors": [
{ {
"name": "Sebastian Bergmann", "name": "Sebastian Bergmann",
"email": "sb@sebastian-bergmann.de", "email": "sebastian@phpunit.de",
"role": "lead" "role": "lead"
} }
], ],
@@ -201,37 +207,36 @@
"homepage": "https://github.com/sebastianbergmann/php-text-template/", "homepage": "https://github.com/sebastianbergmann/php-text-template/",
"keywords": [ "keywords": [
"template" "template"
] ],
"time": "2015-06-21 13:50:34"
}, },
{ {
"name": "phpunit/php-timer", "name": "phpunit/php-timer",
"version": "1.0.4", "version": "1.0.8",
"source": { "source": {
"type": "git", "type": "git",
"url": "git://github.com/sebastianbergmann/php-timer.git", "url": "https://github.com/sebastianbergmann/php-timer.git",
"reference": "1.0.4" "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://github.com/sebastianbergmann/php-timer/zipball/1.0.4", "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260",
"reference": "1.0.4", "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.3" "php": ">=5.3.3"
}, },
"time": "2012-10-11 04:45:58", "require-dev": {
"phpunit/phpunit": "~4|~5"
},
"type": "library", "type": "library",
"installation-source": "dist",
"autoload": { "autoload": {
"classmap": [ "classmap": [
"PHP/" "src/"
] ]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"include-path": [
""
],
"license": [ "license": [
"BSD-3-Clause" "BSD-3-Clause"
], ],
@@ -243,111 +248,114 @@
} }
], ],
"description": "Utility class for timing", "description": "Utility class for timing",
"homepage": "http://www.phpunit.de/", "homepage": "https://github.com/sebastianbergmann/php-timer/",
"keywords": [ "keywords": [
"timer" "timer"
] ],
"time": "2016-05-12 18:03:57"
}, },
{ {
"name": "phpunit/php-token-stream", "name": "phpunit/php-token-stream",
"version": "1.1.5", "version": "1.4.8",
"source": { "source": {
"type": "git", "type": "git",
"url": "git://github.com/sebastianbergmann/php-token-stream.git", "url": "https://github.com/sebastianbergmann/php-token-stream.git",
"reference": "1.1.5" "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://github.com/sebastianbergmann/php-token-stream/zipball/1.1.5", "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
"reference": "1.1.5", "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-tokenizer": "*", "ext-tokenizer": "*",
"php": ">=5.3.3" "php": ">=5.3.3"
}, },
"time": "2012-10-11 04:47:14", "require-dev": {
"phpunit/phpunit": "~4.2"
},
"type": "library", "type": "library",
"installation-source": "dist", "extra": {
"branch-alias": {
"dev-master": "1.4-dev"
}
},
"autoload": { "autoload": {
"classmap": [ "classmap": [
"PHP/" "src/"
] ]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"include-path": [
""
],
"license": [ "license": [
"BSD-3-Clause" "BSD-3-Clause"
], ],
"authors": [ "authors": [
{ {
"name": "Sebastian Bergmann", "name": "Sebastian Bergmann",
"email": "sb@sebastian-bergmann.de", "email": "sebastian@phpunit.de"
"role": "lead"
} }
], ],
"description": "Wrapper around PHP's tokenizer extension.", "description": "Wrapper around PHP's tokenizer extension.",
"homepage": "http://www.phpunit.de/", "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
"keywords": [ "keywords": [
"tokenizer" "tokenizer"
] ],
"time": "2015-09-15 10:49:45"
}, },
{ {
"name": "phpunit/phpunit", "name": "phpunit/phpunit",
"version": "3.7.10", "version": "4.4.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "git://github.com/sebastianbergmann/phpunit.git", "url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "3.7.10" "reference": "2e8580deebb7d1ac92ac878595e6bffe01069c2a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://github.com/sebastianbergmann/phpunit/archive/3.7.10.zip", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2e8580deebb7d1ac92ac878595e6bffe01069c2a",
"reference": "3.7.10", "reference": "2e8580deebb7d1ac92ac878595e6bffe01069c2a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.3",
"phpunit/php-file-iterator": ">=1.3.1",
"phpunit/php-text-template": ">=1.1.1",
"phpunit/php-code-coverage": ">=1.2.1",
"phpunit/php-timer": ">=1.0.2",
"phpunit/phpunit-mock-objects": ">=1.2.0,<1.3.0",
"symfony/yaml": ">=2.1.0",
"ext-dom": "*", "ext-dom": "*",
"ext-json": "*",
"ext-pcre": "*", "ext-pcre": "*",
"ext-reflection": "*", "ext-reflection": "*",
"ext-spl": "*" "ext-spl": "*",
"php": ">=5.3.3",
"phpunit/php-code-coverage": "~2.0",
"phpunit/php-file-iterator": "~1.3.2",
"phpunit/php-text-template": "~1.2",
"phpunit/php-timer": "~1.0.2",
"phpunit/phpunit-mock-objects": "~2.3",
"sebastian/comparator": "~1.0",
"sebastian/diff": "~1.1",
"sebastian/environment": "~1.1",
"sebastian/exporter": "~1.1",
"sebastian/global-state": "~1.0",
"sebastian/recursion-context": "~1.0",
"sebastian/version": "~1.0",
"symfony/yaml": "~2.0"
}, },
"suggest": { "suggest": {
"phpunit/php-invoker": ">=1.1.0", "phpunit/php-invoker": "~1.1"
"ext-json": "*",
"ext-simplexml": "*",
"ext-tokenizer": "*"
}, },
"time": "2012-12-02 14:56:55",
"bin": [ "bin": [
"composer/bin/phpunit" "phpunit"
], ],
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.7.x-dev" "dev-master": "4.4.x-dev"
} }
}, },
"installation-source": "dist",
"autoload": { "autoload": {
"classmap": [ "classmap": [
"PHPUnit/" "src/"
] ]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"include-path": [
"",
"../../symfony/yaml/"
],
"license": [ "license": [
"BSD-3-Clause" "BSD-3-Clause"
], ],
@@ -359,46 +367,52 @@
} }
], ],
"description": "The PHP Unit Testing framework.", "description": "The PHP Unit Testing framework.",
"homepage": "http://www.phpunit.de/", "homepage": "https://phpunit.de/",
"keywords": [ "keywords": [
"testing",
"phpunit", "phpunit",
"testing",
"xunit" "xunit"
] ],
"time": "2015-01-27 16:06:15"
}, },
{ {
"name": "phpunit/phpunit-mock-objects", "name": "phpunit/phpunit-mock-objects",
"version": "1.2.2", "version": "2.3.8",
"source": { "source": {
"type": "git", "type": "git",
"url": "git://github.com/sebastianbergmann/phpunit-mock-objects.git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
"reference": "1.2.2" "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects/archive/1.2.2.zip", "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
"reference": "1.2.2", "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"doctrine/instantiator": "^1.0.2",
"php": ">=5.3.3", "php": ">=5.3.3",
"phpunit/php-text-template": ">=1.1.1@stable" "phpunit/php-text-template": "~1.2",
"sebastian/exporter": "~1.2"
},
"require-dev": {
"phpunit/phpunit": "~4.4"
}, },
"suggest": { "suggest": {
"ext-soap": "*" "ext-soap": "*"
}, },
"time": "2012-11-05 10:39:13",
"type": "library", "type": "library",
"installation-source": "dist", "extra": {
"branch-alias": {
"dev-master": "2.3.x-dev"
}
},
"autoload": { "autoload": {
"classmap": [ "classmap": [
"PHPUnit/" "src/"
] ]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"include-path": [
""
],
"license": [ "license": [
"BSD-3-Clause" "BSD-3-Clause"
], ],
@@ -414,38 +428,410 @@
"keywords": [ "keywords": [
"mock", "mock",
"xunit" "xunit"
] ],
"time": "2015-10-02 06:51:40"
}, },
{ {
"name": "symfony/yaml", "name": "sebastian/comparator",
"version": "v2.1.4", "version": "1.2.0",
"target-dir": "Symfony/Component/Yaml",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/Yaml", "url": "https://github.com/sebastianbergmann/comparator.git",
"reference": "v2.1.4" "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://github.com/symfony/Yaml/archive/v2.1.4.zip", "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
"reference": "v2.1.4", "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"sebastian/diff": "~1.2",
"sebastian/exporter": "~1.2"
},
"require-dev": {
"phpunit/phpunit": "~4.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Jeff Welch",
"email": "[email protected]"
},
{
"name": "Volker Dusch",
"email": "[email protected]"
},
{
"name": "Bernhard Schussek",
"email": "[email protected]"
},
{
"name": "Sebastian Bergmann",
"email": "[email protected]"
}
],
"description": "Provides the functionality to compare PHP values for equality",
"homepage": "http://www.github.com/sebastianbergmann/comparator",
"keywords": [
"comparator",
"compare",
"equality"
],
"time": "2015-07-26 15:48:44"
},
{
"name": "sebastian/diff",
"version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
"reference": "13edfd8706462032c2f52b4b862974dd46b71c9e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
"reference": "13edfd8706462032c2f52b4b862974dd46b71c9e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.3" "php": ">=5.3.3"
}, },
"time": "2012-11-08 09:51:48", "require-dev": {
"phpunit/phpunit": "~4.8"
},
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.1-dev" "dev-master": "1.4-dev"
} }
}, },
"installation-source": "dist",
"autoload": { "autoload": {
"psr-0": { "classmap": [
"Symfony\\Component\\Yaml": "" "src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Kore Nordmann",
"email": "[email protected]"
},
{
"name": "Sebastian Bergmann",
"email": "[email protected]"
} }
],
"description": "Diff implementation",
"homepage": "https://github.com/sebastianbergmann/diff",
"keywords": [
"diff"
],
"time": "2015-12-08 07:14:41"
},
{
"name": "sebastian/environment",
"version": "1.3.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
"reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
"reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"phpunit/phpunit": "~4.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "[email protected]"
}
],
"description": "Provides functionality to handle HHVM/PHP environments",
"homepage": "http://www.github.com/sebastianbergmann/environment",
"keywords": [
"Xdebug",
"environment",
"hhvm"
],
"time": "2016-05-17 03:18:57"
},
{
"name": "sebastian/exporter",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
"reference": "7ae5513327cb536431847bcc0c10edba2701064e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
"reference": "7ae5513327cb536431847bcc0c10edba2701064e",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"sebastian/recursion-context": "~1.0"
},
"require-dev": {
"phpunit/phpunit": "~4.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Jeff Welch",
"email": "[email protected]"
},
{
"name": "Volker Dusch",
"email": "[email protected]"
},
{
"name": "Bernhard Schussek",
"email": "[email protected]"
},
{
"name": "Sebastian Bergmann",
"email": "[email protected]"
},
{
"name": "Adam Harvey",
"email": "[email protected]"
}
],
"description": "Provides the functionality to export PHP variables for visualization",
"homepage": "http://www.github.com/sebastianbergmann/exporter",
"keywords": [
"export",
"exporter"
],
"time": "2015-06-21 07:55:53"
},
{
"name": "sebastian/global-state",
"version": "1.1.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
"reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
"reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"phpunit/phpunit": "~4.2"
},
"suggest": {
"ext-uopz": "*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "[email protected]"
}
],
"description": "Snapshotting of global state",
"homepage": "http://www.github.com/sebastianbergmann/global-state",
"keywords": [
"global state"
],
"time": "2015-10-12 03:26:01"
},
{
"name": "sebastian/recursion-context",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
"reference": "913401df809e99e4f47b27cdd781f4a258d58791"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791",
"reference": "913401df809e99e4f47b27cdd781f4a258d58791",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"phpunit/phpunit": "~4.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Jeff Welch",
"email": "[email protected]"
},
{
"name": "Sebastian Bergmann",
"email": "[email protected]"
},
{
"name": "Adam Harvey",
"email": "[email protected]"
}
],
"description": "Provides functionality to recursively process PHP variables",
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
"time": "2015-11-11 19:50:13"
},
{
"name": "sebastian/version",
"version": "1.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/version.git",
"reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
"reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
"shasum": ""
},
"type": "library",
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
"email": "[email protected]",
"role": "lead"
}
],
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
"homepage": "https://github.com/sebastianbergmann/version",
"time": "2015-06-21 13:59:46"
},
{
"name": "symfony/yaml",
"version": "v2.8.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "815fabf3f48c7d1df345a69d1ad1a88f59757b34"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/815fabf3f48c7d1df345a69d1ad1a88f59757b34",
"reference": "815fabf3f48c7d1df345a69d1ad1a88f59757b34",
"shasum": ""
},
"require": {
"php": ">=5.3.9"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.8-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Yaml\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@@ -458,18 +844,21 @@
}, },
{ {
"name": "Symfony Community", "name": "Symfony Community",
"homepage": "http://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony Yaml Component", "description": "Symfony Yaml Component",
"homepage": "http://symfony.com" "homepage": "https://symfony.com",
"time": "2016-06-06 11:11:27"
} }
], ],
"aliases": [ "aliases": [],
],
"minimum-stability": "stable", "minimum-stability": "stable",
"stability-flags": { "stability-flags": [],
"phpunit/phpunit": 0 "prefer-stable": false,
} "prefer-lowest": false,
"platform": {
"php": ">=5.3.3"
},
"platform-dev": []
} }
@@ -10,11 +10,11 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection; namespace Barryvdh\Reflection;
use phpDocumentor\Reflection\DocBlock\Tag; use Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Context; use Barryvdh\Reflection\DocBlock\Context;
use phpDocumentor\Reflection\DocBlock\Location; use Barryvdh\Reflection\DocBlock\Location;
/** /**
* Parses the DocBlock for any structure. * Parses the DocBlock for any structure.
@@ -46,6 +46,12 @@ class DocBlock implements \Reflector
/** @var Location Information about the location of this DocBlock. */ /** @var Location Information about the location of this DocBlock. */
protected $location = null; protected $location = null;
/** @var bool Is this DocBlock (the start of) a template? */
protected $isTemplateStart = false;
/** @var bool Does this DocBlock signify the end of a DocBlock template? */
protected $isTemplateEnd = false;
/** /**
* Parses the given docblock and populates the member fields. * Parses the given docblock and populates the member fields.
* *
@@ -81,7 +87,9 @@ class DocBlock implements \Reflector
$docblock = $this->cleanInput($docblock); $docblock = $this->cleanInput($docblock);
list($short, $long, $tags) = $this->splitDocBlock($docblock); list($templateMarker, $short, $long, $tags) = $this->splitDocBlock($docblock);
$this->isTemplateStart = $templateMarker === '#@+';
$this->isTemplateEnd = $templateMarker === '#@-';
$this->short_description = $short; $this->short_description = $short;
$this->long_description = new DocBlock\Description($long, $this); $this->long_description = new DocBlock\Description($long, $this);
$this->parseTags($tags); $this->parseTags($tags);
@@ -119,74 +127,86 @@ class DocBlock implements \Reflector
} }
/** /**
* Splits the DocBlock into a short description, long description and * Splits the DocBlock into a template marker, summary, description and block of tags.
* block of tags.
* *
* @param string $comment Comment to split into the sub-parts. * @param string $comment Comment to split into the sub-parts.
* *
* @author RichardJ Special thanks to RichardJ for the regex responsible * @author Richard van Velzen (@_richardJ) Special thanks to Richard for the regex responsible for the split.
* for the split. * @author Mike van Riel <me@mikevanriel.com> for extending the regex with template marker support.
* *
* @return string[] containing the short-, long description and an element * @return string[] containing the template marker (if any), summary, description and a string containing the tags.
* containing the tags.
*/ */
protected function splitDocBlock($comment) protected function splitDocBlock($comment)
{ {
// Performance improvement cheat: if the first character is an @ then only tags are in this DocBlock. This
// method does not split tags so we return this verbatim as the fourth result (tags). This saves us the
// performance impact of running a regular expression
if (strpos($comment, '@') === 0) { if (strpos($comment, '@') === 0) {
$matches = array('', '', $comment); return array('', '', '', $comment);
} else {
// clears all extra horizontal whitespace from the line endings
// to prevent parsing issues
$comment = preg_replace('/\h*$/Sum', '', $comment);
/*
* Splits the docblock into a short description, long description and
* tags section
* - The short description is started from the first character until
* a dot is encountered followed by a whitespace OR
* two consecutive newlines (horizontal whitespace is taken into
* account to consider spacing errors)
* - The long description, any character until a new line is
* encountered followed by an @ and word characters (a tag).
* This is optional.
* - Tags; the remaining characters
*
* Big thanks to RichardJ for contributing this Regular Expression
*/
preg_match(
'/
\A (
[^\n.]+
(?:
(?! \. \s | \n{2} ) # disallow the first seperator here
[\n.] (?! [ \t]* @\pL ) # disallow second seperator
[^\n.]+
)*
\.?
)
(?:
\s* # first seperator (actually newlines but it\'s all whitespace)
(?! @\pL ) # disallow the rest, to make sure this one doesn\'t match,
#if it doesn\'t exist
(
[^\n]+
(?: \n+
(?! [ \t]* @\pL ) # disallow second seperator (@param)
[^\n]+
)*
)
)?
(\s+ [\s\S]*)? # everything that follows
/ux',
$comment,
$matches
);
array_shift($matches);
} }
while (count($matches) < 3) { // clears all extra horizontal whitespace from the line endings to prevent parsing issues
$comment = preg_replace('/\h*$/Sum', '', $comment);
/*
* Splits the docblock into a template marker, short description, long description and tags section
*
* - The template marker is empty, #@+ or #@- if the DocBlock starts with either of those (a newline may
* occur after it and will be stripped).
* - The short description is started from the first character until a dot is encountered followed by a
* newline OR two consecutive newlines (horizontal whitespace is taken into account to consider spacing
* errors). This is optional.
* - The long description, any character until a new line is encountered followed by an @ and word
* characters (a tag). This is optional.
* - Tags; the remaining characters
*
* Big thanks to RichardJ for contributing this Regular Expression
*/
preg_match(
'/
\A
# 1. Extract the template marker
(?:(\#\@\+|\#\@\-)\n?)?
# 2. Extract the summary
(?:
(?! @\pL ) # The summary may not start with an @
(
[^\n.]+
(?:
(?! \. \n | \n{2} ) # End summary upon a dot followed by newline or two newlines
[\n.] (?! [ \t]* @\pL ) # End summary when an @ is found as first character on a new line
[^\n.]+ # Include anything else
)*
\.?
)?
)
# 3. Extract the description
(?:
\s* # Some form of whitespace _must_ precede a description because a summary must be there
(?! @\pL ) # The description may not start with an @
(
[^\n]+
(?: \n+
(?! [ \t]* @\pL ) # End description when an @ is found as first character on a new line
[^\n]+ # Include anything else
)*
)
)?
# 4. Extract the tags (anything that follows)
(\s+ [\s\S]*)? # everything that follows
/ux',
$comment,
$matches
);
array_shift($matches);
while (count($matches) < 4) {
$matches[] = ''; $matches[] = '';
} }
return $matches; return $matches;
} }
@@ -209,26 +229,59 @@ class DocBlock implements \Reflector
); );
} }
foreach (explode("\n", $tags) as $tag_line) { foreach (explode("\n", $tags) as $tag_line) {
if (trim($tag_line) === '') {
continue;
}
if (isset($tag_line[0]) && ($tag_line[0] === '@')) { if (isset($tag_line[0]) && ($tag_line[0] === '@')) {
$result[] = $tag_line; $result[] = $tag_line;
} else { } else {
$result[count($result) - 1] .= PHP_EOL . $tag_line; $result[count($result) - 1] .= "\n" . $tag_line;
} }
} }
// create proper Tag objects // create proper Tag objects
foreach ($result as $key => $tag_line) { foreach ($result as $key => $tag_line) {
$result[$key] = Tag::createInstance($tag_line, $this); $result[$key] = Tag::createInstance(trim($tag_line), $this);
} }
} }
$this->tags = $result; $this->tags = $result;
} }
/**
* Gets the text portion of the doc block.
*
* Gets the text portion (short and long description combined) of the doc
* block.
*
* @return string The text portion of the doc block.
*/
public function getText()
{
$short = $this->getShortDescription();
$long = $this->getLongDescription()->getContents();
if ($long) {
return "{$short}\n\n{$long}";
} else {
return $short;
}
}
/**
* Set the text portion of the doc block.
*
* Sets the text portion (short and long description combined) of the doc
* block.
*
* @param string $docblock The new text portion of the doc block.
*
* @return $this This doc block.
*/
public function setText($comment)
{
list(,$short, $long) = $this->splitDocBlock($comment);
$this->short_description = $short;
$this->long_description = new DocBlock\Description($long, $this);
return $this;
}
/** /**
* Returns the opening line or also known as short description. * Returns the opening line or also known as short description.
* *
@@ -249,6 +302,44 @@ class DocBlock implements \Reflector
return $this->long_description; return $this->long_description;
} }
/**
* Returns whether this DocBlock is the start of a Template section.
*
* A Docblock may serve as template for a series of subsequent DocBlocks. This is indicated by a special marker
* (`#@+`) that is appended directly after the opening `/**` of a DocBlock.
*
* An example of such an opening is:
*
* ```
* /**#@+
* * My DocBlock
* * /
* ```
*
* The description and tags (not the summary!) are copied onto all subsequent DocBlocks and also applied to all
* elements that follow until another DocBlock is found that contains the closing marker (`#@-`).
*
* @see self::isTemplateEnd() for the check whether a closing marker was provided.
*
* @return boolean
*/
public function isTemplateStart()
{
return $this->isTemplateStart;
}
/**
* Returns whether this DocBlock is the end of a Template section.
*
* @see self::isTemplateStart() for a more complete description of the Docblock Template functionality.
*
* @return boolean
*/
public function isTemplateEnd()
{
return $this->isTemplateEnd;
}
/** /**
* Returns the current context. * Returns the current context.
* *
@@ -321,14 +412,14 @@ class DocBlock implements \Reflector
return false; return false;
} }
/** /**
* Appends a tag at the end of the list of tags. * Appends a tag at the end of the list of tags.
* *
* @param Tag $tag The tag to add. * @param Tag $tag The tag to add.
* *
* @return Tag The newly added tag. * @return Tag The newly added tag.
* *
* @throws \LogicException When the tag belongs to a different DocBlock. * @throws \LogicException When the tag belongs to a different DocBlock.
*/ */
public function appendTag(Tag $tag) public function appendTag(Tag $tag)
@@ -336,7 +427,7 @@ class DocBlock implements \Reflector
if (null === $tag->getDocBlock()) { if (null === $tag->getDocBlock()) {
$tag->setDocBlock($this); $tag->setDocBlock($this);
} }
if ($tag->getDocBlock() === $this) { if ($tag->getDocBlock() === $this) {
$this->tags[] = $tag; $this->tags[] = $tag;
} else { } else {
@@ -348,6 +439,24 @@ class DocBlock implements \Reflector
return $tag; return $tag;
} }
/**
* Deletes a tag from the list of tags.
*
* @param Tag $tag The tag to be deleted.
*
* @return bool True if the tag was deleted.
*/
public function deleteTag(Tag $tag)
{
if (($key = array_search($tag, $this->tags)) !== false) {
unset($this->tags[$key]);
return true;
}
return false;
}
/** /**
* Builds a string representation of this object. * Builds a string representation of this object.
* *
@@ -10,7 +10,7 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock; namespace Barryvdh\Reflection\DocBlock;
/** /**
* The context in which a DocBlock occurs. * The context in which a DocBlock occurs.
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock; namespace Barryvdh\Reflection\DocBlock;
use phpDocumentor\Reflection\DocBlock; use Barryvdh\Reflection\DocBlock;
/** /**
* Parses a Description of a DocBlock or tag. * Parses a Description of a DocBlock or tag.
@@ -55,15 +55,15 @@ class Description implements \Reflector
/** /**
* Sets the text of this description. * Sets the text of this description.
* *
* @param string $content The new text of this description. * @param string $content The new text of this description.
* *
* @return $this * @return $this
*/ */
public function setContent($content) public function setContent($content)
{ {
$this->contents = trim($content); $this->contents = trim($content);
$this->parsedContents = null; $this->parsedContents = null;
return $this; return $this;
} }
@@ -140,7 +140,7 @@ class Description implements \Reflector
* *
* @todo this should become a more intelligent piece of code where the * @todo this should become a more intelligent piece of code where the
* configuration contains a setting what format long descriptions are. * configuration contains a setting what format long descriptions are.
* *
* @codeCoverageIgnore Will be removed soon, in favor of adapters at * @codeCoverageIgnore Will be removed soon, in favor of adapters at
* PhpDocumentor itself that will process text in various formats. * PhpDocumentor itself that will process text in various formats.
* *
@@ -161,7 +161,10 @@ class Description implements \Reflector
); );
} }
if (class_exists('dflydev\markdown\MarkdownExtraParser')) { if (class_exists('Parsedown')) {
$markdown = \Parsedown::instance();
$result = $markdown->parse($result);
} elseif (class_exists('dflydev\markdown\MarkdownExtraParser')) {
$markdown = new \dflydev\markdown\MarkdownExtraParser(); $markdown = new \dflydev\markdown\MarkdownExtraParser();
$result = $markdown->transformMarkdown($result); $result = $markdown->transformMarkdown($result);
} }
@@ -171,7 +174,7 @@ class Description implements \Reflector
/** /**
* Gets the docblock this tag belongs to. * Gets the docblock this tag belongs to.
* *
* @return DocBlock The docblock this description belongs to. * @return DocBlock The docblock this description belongs to.
*/ */
public function getDocBlock() public function getDocBlock()
@@ -181,10 +184,10 @@ class Description implements \Reflector
/** /**
* Sets the docblock this tag belongs to. * Sets the docblock this tag belongs to.
* *
* @param DocBlock $docblock The new docblock this description belongs to. * @param DocBlock $docblock The new docblock this description belongs to.
* Setting NULL removes any association. * Setting NULL removes any association.
* *
* @return $this * @return $this
*/ */
public function setDocBlock(DocBlock $docblock = null) public function setDocBlock(DocBlock $docblock = null)
@@ -209,14 +212,12 @@ class Description implements \Reflector
} }
/** /**
* Returns the exported information (we should use the export static method * Returns the long description as a string.
* BUT this throws an exception at this point).
* *
* @return string * @return string
* @codeCoverageIgnore Not yet implemented
*/ */
public function __toString() public function __toString()
{ {
return 'Not yet implemented'; return $this->getContents();
} }
} }
@@ -10,7 +10,7 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock; namespace Barryvdh\Reflection\DocBlock;
/** /**
* The location a DocBlock occurs within a file. * The location a DocBlock occurs within a file.
@@ -0,0 +1,198 @@
<?php
/**
* phpDocumentor
*
* PHP Version 5.3
*
* @author Barry vd. Heuvel <[email protected]>
* @copyright 2013 Mike van Riel / Naenius (http://www.naenius.com)
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
namespace Barryvdh\Reflection\DocBlock;
use Barryvdh\Reflection\DocBlock;
/**
* Serializes a DocBlock instance.
*
* @author Barry vd. Heuvel <[email protected]>
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
class Serializer
{
/** @var string The string to indent the comment with. */
protected $indentString = ' ';
/** @var int The number of times the indent string is repeated. */
protected $indent = 0;
/** @var bool Whether to indent the first line. */
protected $isFirstLineIndented = true;
/** @var int|null The max length of a line. */
protected $lineLength = null;
/**
* Create a Serializer instance.
*
* @param int $indent The number of times the indent string is
* repeated.
* @param string $indentString The string to indent the comment with.
* @param bool $indentFirstLine Whether to indent the first line.
* @param int|null $lineLength The max length of a line or NULL to
* disable line wrapping.
*/
public function __construct(
$indent = 0,
$indentString = ' ',
$indentFirstLine = true,
$lineLength = null
) {
$this->setIndentationString($indentString);
$this->setIndent($indent);
$this->setIsFirstLineIndented($indentFirstLine);
$this->setLineLength($lineLength);
}
/**
* Sets the string to indent comments with.
*
* @param string $indentationString The string to indent comments with.
*
* @return $this This serializer object.
*/
public function setIndentationString($indentString)
{
$this->indentString = (string)$indentString;
return $this;
}
/**
* Gets the string to indent comments with.
*
* @return string The indent string.
*/
public function getIndentationString()
{
return $this->indentString;
}
/**
* Sets the number of indents.
*
* @param int $indent The number of times the indent string is repeated.
*
* @return $this This serializer object.
*/
public function setIndent($indent)
{
$this->indent = (int)$indent;
return $this;
}
/**
* Gets the number of indents.
*
* @return int The number of times the indent string is repeated.
*/
public function getIndent()
{
return $this->indent;
}
/**
* Sets whether or not the first line should be indented.
*
* Sets whether or not the first line (the one with the "/**") should be
* indented.
*
* @param bool $indentFirstLine The new value for this setting.
*
* @return $this This serializer object.
*/
public function setIsFirstLineIndented($indentFirstLine)
{
$this->isFirstLineIndented = (bool)$indentFirstLine;
return $this;
}
/**
* Gets whether or not the first line should be indented.
*
* @return bool Whether or not the first line should be indented.
*/
public function isFirstLineIndented()
{
return $this->isFirstLineIndented;
}
/**
* Sets the line length.
*
* Sets the length of each line in the serialization. Content will be
* wrapped within this limit.
*
* @param int|null $lineLength The length of each line. NULL to disable line
* wrapping altogether.
*
* @return $this This serializer object.
*/
public function setLineLength($lineLength)
{
$this->lineLength = null === $lineLength ? null : (int)$lineLength;
return $this;
}
/**
* Gets the line length.
*
* @return int|null The length of each line or NULL if line wrapping is
* disabled.
*/
public function getLineLength()
{
return $this->lineLength;
}
/**
* Generate a DocBlock comment.
*
* @param DocBlock The DocBlock to serialize.
*
* @return string The serialized doc block.
*/
public function getDocComment(DocBlock $docblock)
{
$indent = str_repeat($this->indentString, $this->indent);
$firstIndent = $this->isFirstLineIndented ? $indent : '';
$text = $docblock->getText();
if ($this->lineLength) {
//3 === strlen(' * ')
$wrapLength = $this->lineLength - strlen($indent) - 3;
$text = wordwrap($text, $wrapLength);
}
$text = str_replace("\n", "\n{$indent} * ", $text);
$comment = "{$firstIndent}/**\n{$indent} * {$text}\n{$indent} *\n";
/** @var Tag $tag */
foreach ($docblock->getTags() as $tag) {
$tagText = (string) $tag;
if ($this->lineLength) {
$tagText = wordwrap($tagText, $wrapLength);
}
$tagText = str_replace("\n", "\n{$indent} * ", $tagText);
$comment .= "{$indent} * {$tagText}\n";
}
$comment .= $indent . ' */';
return $comment;
}
}
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock; namespace Barryvdh\Reflection\DocBlock;
use phpDocumentor\Reflection\DocBlock; use Barryvdh\Reflection\DocBlock;
/** /**
* Parses a tag definition for a DocBlock. * Parses a tag definition for a DocBlock.
@@ -59,43 +59,43 @@ class Tag implements \Reflector
*/ */
private static $tagHandlerMappings = array( private static $tagHandlerMappings = array(
'author' 'author'
=> '\phpDocumentor\Reflection\DocBlock\Tag\AuthorTag', => '\Barryvdh\Reflection\DocBlock\Tag\AuthorTag',
'covers' 'covers'
=> '\phpDocumentor\Reflection\DocBlock\Tag\CoversTag', => '\Barryvdh\Reflection\DocBlock\Tag\CoversTag',
'deprecated' 'deprecated'
=> '\phpDocumentor\Reflection\DocBlock\Tag\DeprecatedTag', => '\Barryvdh\Reflection\DocBlock\Tag\DeprecatedTag',
'example' 'example'
=> '\phpDocumentor\Reflection\DocBlock\Tag\ExampleTag', => '\Barryvdh\Reflection\DocBlock\Tag\ExampleTag',
'link' 'link'
=> '\phpDocumentor\Reflection\DocBlock\Tag\LinkTag', => '\Barryvdh\Reflection\DocBlock\Tag\LinkTag',
'method' 'method'
=> '\phpDocumentor\Reflection\DocBlock\Tag\MethodTag', => '\Barryvdh\Reflection\DocBlock\Tag\MethodTag',
'param' 'param'
=> '\phpDocumentor\Reflection\DocBlock\Tag\ParamTag', => '\Barryvdh\Reflection\DocBlock\Tag\ParamTag',
'property-read' 'property-read'
=> '\phpDocumentor\Reflection\DocBlock\Tag\PropertyReadTag', => '\Barryvdh\Reflection\DocBlock\Tag\PropertyReadTag',
'property' 'property'
=> '\phpDocumentor\Reflection\DocBlock\Tag\PropertyTag', => '\Barryvdh\Reflection\DocBlock\Tag\PropertyTag',
'property-write' 'property-write'
=> '\phpDocumentor\Reflection\DocBlock\Tag\PropertyWriteTag', => '\Barryvdh\Reflection\DocBlock\Tag\PropertyWriteTag',
'return' 'return'
=> '\phpDocumentor\Reflection\DocBlock\Tag\ReturnTag', => '\Barryvdh\Reflection\DocBlock\Tag\ReturnTag',
'see' 'see'
=> '\phpDocumentor\Reflection\DocBlock\Tag\SeeTag', => '\Barryvdh\Reflection\DocBlock\Tag\SeeTag',
'since' 'since'
=> '\phpDocumentor\Reflection\DocBlock\Tag\SinceTag', => '\Barryvdh\Reflection\DocBlock\Tag\SinceTag',
'source' 'source'
=> '\phpDocumentor\Reflection\DocBlock\Tag\SourceTag', => '\Barryvdh\Reflection\DocBlock\Tag\SourceTag',
'throw' 'throw'
=> '\phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag', => '\Barryvdh\Reflection\DocBlock\Tag\ThrowsTag',
'throws' 'throws'
=> '\phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag', => '\Barryvdh\Reflection\DocBlock\Tag\ThrowsTag',
'uses' 'uses'
=> '\phpDocumentor\Reflection\DocBlock\Tag\UsesTag', => '\Barryvdh\Reflection\DocBlock\Tag\UsesTag',
'var' 'var'
=> '\phpDocumentor\Reflection\DocBlock\Tag\VarTag', => '\Barryvdh\Reflection\DocBlock\Tag\VarTag',
'version' 'version'
=> '\phpDocumentor\Reflection\DocBlock\Tag\VersionTag' => '\Barryvdh\Reflection\DocBlock\Tag\VersionTag'
); );
/** /**
@@ -366,14 +366,12 @@ class Tag implements \Reflector
} }
/** /**
* Returns the exported information (we should use the export static method * Returns the tag as a serialized string
* BUT this throws an exception at this point).
* *
* @return string * @return string
* @codeCoverageIgnore Not yet implemented
*/ */
public function __toString() public function __toString()
{ {
return 'Not yet implemented'; return "@{$this->getName()} {$this->getContent()}";
} }
} }
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Tag; use Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for an @author tag in a Docblock. * Reflection class for an @author tag in a Docblock.
@@ -10,7 +10,7 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @covers tag in a Docblock. * Reflection class for a @covers tag in a Docblock.
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Tag\VersionTag; use Barryvdh\Reflection\DocBlock\Tag\VersionTag;
/** /**
* Reflection class for a @deprecated tag in a Docblock. * Reflection class for a @deprecated tag in a Docblock.
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Tag; use Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @example tag in a Docblock. * Reflection class for a @example tag in a Docblock.
@@ -56,7 +56,7 @@ class ExampleTag extends SourceTag
$filePath = '"' . $this->filePath . '"'; $filePath = '"' . $this->filePath . '"';
} }
$this->content = $filePath . ' ' . $this->getContent(); $this->content = $filePath . ' ' . parent::getContent();
} }
return $this->content; return $this->content;
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Tag; use Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @link tag in a Docblock. * Reflection class for a @link tag in a Docblock.
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Tag; use Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @method in a Docblock. * Reflection class for a @method in a Docblock.
@@ -29,6 +29,9 @@ class MethodTag extends ReturnTag
/** @var string */ /** @var string */
protected $arguments = ''; protected $arguments = '';
/** @var bool */
protected $isStatic = false;
/** /**
* {@inheritdoc} * {@inheritdoc}
@@ -36,12 +39,16 @@ class MethodTag extends ReturnTag
public function getContent() public function getContent()
{ {
if (null === $this->content) { if (null === $this->content) {
$this->content = $this->type . $this->content = '';
if ($this->isStatic) {
$this->content .= 'static ';
}
$this->content .= $this->type .
" {$this->method_name}({$this->arguments}) " . " {$this->method_name}({$this->arguments}) " .
$this->description; $this->description;
} }
return $this; return $this->content;
} }
/** /**
@@ -51,15 +58,22 @@ class MethodTag extends ReturnTag
{ {
Tag::setContent($content); Tag::setContent($content);
// 1. none or more whitespace // 1. none or more whitespace
// 2. optionally a word with underscores followed by whitespace : as // 2. optionally the keyword "static" followed by whitespace
// 3. optionally a word with underscores followed by whitespace : as
// type for the return value // type for the return value
// 3. then optionally a word with underscores followed by () and // 4. then optionally a word with underscores followed by () and
// whitespace : as method name as used by phpDocumentor // whitespace : as method name as used by phpDocumentor
// 4. then a word with underscores, followed by ( and any character // 5. then a word with underscores, followed by ( and any character
// until a ) and whitespace : as method name with signature // until a ) and whitespace : as method name with signature
// 5. any remaining text : as description // 6. any remaining text : as description
if (preg_match( if (preg_match(
'/^ '/^
# Static keyword
# Declates a static method ONLY if type is also present
(?:
(static)
\s+
)?
# Return type # Return type
(?: (?:
([\w\|_\\\\]+) ([\w\|_\\\\]+)
@@ -82,18 +96,24 @@ class MethodTag extends ReturnTag
)) { )) {
list( list(
, ,
$static,
$this->type, $this->type,
$this->method_name, $this->method_name,
$this->arguments, $this->arguments,
$this->description $this->description
) = $matches; ) = $matches;
if (!$this->type) { if ($static) {
$this->type = 'void'; if (!$this->type) {
$this->type = 'static';
} else {
$this->isStatic = true;
}
} else {
if (!$this->type) {
$this->type = 'void';
}
} }
$this->parsedDescription = null; $this->parsedDescription = null;
} else {
echo date('c') . ' ERR (3): @method contained invalid contents: '
. $this->content . PHP_EOL;
} }
return $this; return $this;
@@ -160,4 +180,30 @@ class MethodTag extends ReturnTag
return $arguments; return $arguments;
} }
/**
* Checks whether the method tag describes a static method or not.
*
* @return bool TRUE if the method declaration is for a static method, FALSE
* otherwise.
*/
public function isStatic()
{
return $this->isStatic;
}
/**
* Sets a new value for whether the method is static or not.
*
* @param bool $isStatic The new value to set.
*
* @return $this
*/
public function setIsStatic($isStatic)
{
$this->isStatic = $isStatic;
$this->content = null;
return $this;
}
} }
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Tag; use Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @param tag in a Docblock. * Reflection class for a @param tag in a Docblock.
@@ -23,11 +23,12 @@ use phpDocumentor\Reflection\DocBlock\Tag;
*/ */
class ParamTag extends ReturnTag class ParamTag extends ReturnTag
{ {
/** /** @var string */
* @var string
*/
protected $variableName = ''; protected $variableName = '';
/** @var bool determines whether this is a variadic argument */
protected $isVariadic = false;
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
@@ -61,13 +62,18 @@ class ParamTag extends ReturnTag
array_shift($parts); array_shift($parts);
} }
// if the next item starts with a $ it must be the variable name // if the next item starts with a $ or ...$ it must be the variable name
if (isset($parts[0]) if (isset($parts[0])
&& (strlen($parts[0]) > 0) && (strlen($parts[0]) > 0)
&& ($parts[0][0] == '$') && ($parts[0][0] == '$' || substr($parts[0], 0, 4) === '...$')
) { ) {
$this->variableName = array_shift($parts); $this->variableName = array_shift($parts);
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->setDescription(implode('', $parts));
@@ -100,4 +106,14 @@ class ParamTag extends ReturnTag
$this->content = null; $this->content = null;
return $this; return $this;
} }
/**
* Returns whether this tag is variadic.
*
* @return boolean
*/
public function isVariadic()
{
return $this->isVariadic;
}
} }
@@ -10,7 +10,7 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @property-read tag in a Docblock. * Reflection class for a @property-read tag in a Docblock.
@@ -10,7 +10,7 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @property tag in a Docblock. * Reflection class for a @property tag in a Docblock.
@@ -10,7 +10,7 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @property-write tag in a Docblock. * Reflection class for a @property-write tag in a Docblock.
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Tag; use Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Type\Collection; use Barryvdh\Reflection\DocBlock\Type\Collection;
/** /**
* Reflection class for a @return tag in a Docblock. * Reflection class for a @return tag in a Docblock.
@@ -33,13 +33,13 @@ class ReturnTag extends Tag
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function getCotnent() public function getContent()
{ {
if (null === $this->content) { if (null === $this->content) {
$this->content = "{$this->type} {$this->description}"; $this->content = "{$this->getType()} {$this->description}";
} }
return $this->cotnent; return $this->content;
} }
/** /**
@@ -53,6 +53,7 @@ class ReturnTag extends Tag
// any output is considered a type // any output is considered a type
$this->type = $parts[0]; $this->type = $parts[0];
$this->types = null;
$this->setDescription(isset($parts[1]) ? $parts[1] : ''); $this->setDescription(isset($parts[1]) ? $parts[1] : '');
@@ -80,6 +81,35 @@ class ReturnTag extends Tag
return (string) $this->getTypesCollection(); return (string) $this->getTypesCollection();
} }
/**
* Set the type section of the variable
*
* @param string $type
* @return $this
*/
public function setType($type)
{
$this->type = $type;
$this->types = null;
$this->content = null;
return $this;
}
/**
* Add a type to the type section of the variable
*
* @param string $type
* @return $this
*/
public function addType($type)
{
$this->type = $this->type . Collection::OPERATOR_OR . $type;
$this->types = null;
$this->content = null;
return $this;
}
/** /**
* Returns the type collection. * Returns the type collection.
* *
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Tag; use Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @see tag in a Docblock. * Reflection class for a @see tag in a Docblock.
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Tag\VersionTag; use Barryvdh\Reflection\DocBlock\Tag\VersionTag;
/** /**
* Reflection class for a @since tag in a Docblock. * Reflection class for a @since tag in a Docblock.
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Tag; use Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @source tag in a Docblock. * Reflection class for a @source tag in a Docblock.
@@ -10,7 +10,7 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @throws tag in a Docblock. * Reflection class for a @throws tag in a Docblock.
@@ -10,7 +10,7 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @uses tag in a Docblock. * Reflection class for a @uses tag in a Docblock.
@@ -10,7 +10,7 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @var tag in a Docblock. * Reflection class for a @var tag in a Docblock.
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
use phpDocumentor\Reflection\DocBlock\Tag; use Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Reflection class for a @version tag in a Docblock. * Reflection class for a @version tag in a Docblock.
@@ -10,9 +10,9 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Type; namespace Barryvdh\Reflection\DocBlock\Type;
use phpDocumentor\Reflection\DocBlock\Context; use Barryvdh\Reflection\DocBlock\Context;
/** /**
* Collection * Collection
@@ -156,12 +156,18 @@ class Collection extends \ArrayObject
} }
if ($this->isRelativeType($type) && !$this->isTypeAKeyword($type)) { if ($this->isRelativeType($type) && !$this->isTypeAKeyword($type)) {
if($this->shouldBeAbsolute($type)){
return self::OPERATOR_NAMESPACE . $type;
}
$type_parts = explode(self::OPERATOR_NAMESPACE, $type, 2); $type_parts = explode(self::OPERATOR_NAMESPACE, $type, 2);
$namespace_aliases = $this->context->getNamespaceAliases(); $namespace_aliases = $this->context->getNamespaceAliases();
// if the first segment is not an alias; prepend namespace name and // if the first segment is not an alias; prepend namespace name and
// return // return
if (!isset($namespace_aliases[$type_parts[0]])) { if (!isset($namespace_aliases[$type_parts[0]]) &&
!isset($namespace_aliases[strstr($type_parts[0], '::', true)])) {
$namespace = $this->context->getNamespace(); $namespace = $this->context->getNamespace();
if ('' !== $namespace) { if ('' !== $namespace) {
$namespace .= self::OPERATOR_NAMESPACE; $namespace .= self::OPERATOR_NAMESPACE;
@@ -169,6 +175,12 @@ class Collection extends \ArrayObject
return self::OPERATOR_NAMESPACE . $namespace . $type; return self::OPERATOR_NAMESPACE . $namespace . $type;
} }
if (strpos($type_parts[0], '::')) {
$type_parts[] = strstr($type_parts[0], '::');
$type_parts[0] = $namespace_aliases[strstr($type_parts[0], '::', true)];
return implode('', $type_parts);
}
$type_parts[0] = $namespace_aliases[$type_parts[0]]; $type_parts[0] = $namespace_aliases[$type_parts[0]];
$type = implode(self::OPERATOR_NAMESPACE, $type_parts); $type = implode(self::OPERATOR_NAMESPACE, $type_parts);
} }
@@ -218,4 +230,16 @@ class Collection extends \ArrayObject
return ($type[0] !== self::OPERATOR_NAMESPACE) return ($type[0] !== self::OPERATOR_NAMESPACE)
|| $this->isTypeAKeyword($type); || $this->isTypeAKeyword($type);
} }
/**
* Detects if the type should actually be absolute, by checking if it exists.
*
* @param string $type A relative or absolute type as defined in the
* phpDocumentor documentation.
*
* @return bool
*/
protected function shouldBeAbsolute($type){
return class_exists($type);
}
} }
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock; namespace Barryvdh\Reflection\DocBlock;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Description * Test class for \Barryvdh\Reflection\DocBlock\Description
* *
* @author Vasil Rangelov <boen.robot@gmail.com> * @author Vasil Rangelov <boen.robot@gmail.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\CoversTag * Test class for \Barryvdh\Reflection\DocBlock\Tag\CoversTag
* *
* @author Daniel O'Connor <daniel.oconnor@gmail.com> * @author Daniel O'Connor <daniel.oconnor@gmail.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -23,7 +23,7 @@ namespace phpDocumentor\Reflection\DocBlock\Tag;
class CoversTagTest extends \PHPUnit_Framework_TestCase class CoversTagTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\CoversTag can create * Test that the \Barryvdh\Reflection\DocBlock\Tag\CoversTag can create
* a link for the covers doc block. * a link for the covers doc block.
* *
* @param string $type * @param string $type
@@ -31,7 +31,7 @@ class CoversTagTest extends \PHPUnit_Framework_TestCase
* @param string $exContent * @param string $exContent
* @param string $exReference * @param string $exReference
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\CoversTag * @covers \Barryvdh\Reflection\DocBlock\Tag\CoversTag
* @dataProvider provideDataForConstuctor * @dataProvider provideDataForConstuctor
* *
* @return void * @return void
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\DeprecatedTag * Test class for \Barryvdh\Reflection\DocBlock\Tag\DeprecatedTag
* *
* @author Vasil Rangelov <boen.robot@gmail.com> * @author Vasil Rangelov <boen.robot@gmail.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -23,7 +23,7 @@ namespace phpDocumentor\Reflection\DocBlock\Tag;
class DeprecatedTagTest extends \PHPUnit_Framework_TestCase class DeprecatedTagTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\LinkTag can create * Test that the \Barryvdh\Reflection\DocBlock\Tag\LinkTag can create
* a link for the @deprecated doc block. * a link for the @deprecated doc block.
* *
* @param string $type * @param string $type
@@ -32,7 +32,7 @@ class DeprecatedTagTest extends \PHPUnit_Framework_TestCase
* @param string $exDescription * @param string $exDescription
* @param string $exVersion * @param string $exVersion
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\DeprecatedTag * @covers \Barryvdh\Reflection\DocBlock\Tag\DeprecatedTag
* @dataProvider provideDataForConstuctor * @dataProvider provideDataForConstuctor
* *
* @return void * @return void
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\ExampleTag * Test class for \Barryvdh\Reflection\DocBlock\Tag\ExampleTag
* *
* @author Vasil Rangelov <boen.robot@gmail.com> * @author Vasil Rangelov <boen.robot@gmail.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -23,7 +23,7 @@ namespace phpDocumentor\Reflection\DocBlock\Tag;
class ExampleTagTest extends \PHPUnit_Framework_TestCase class ExampleTagTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\SourceTag can * Test that the \Barryvdh\Reflection\DocBlock\Tag\SourceTag can
* understand the @source DocBlock. * understand the @source DocBlock.
* *
* @param string $type * @param string $type
@@ -33,7 +33,7 @@ class ExampleTagTest extends \PHPUnit_Framework_TestCase
* @param string $exLineCount * @param string $exLineCount
* @param string $exFilepath * @param string $exFilepath
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\ExampleTag * @covers \Barryvdh\Reflection\DocBlock\Tag\ExampleTag
* @dataProvider provideDataForConstuctor * @dataProvider provideDataForConstuctor
* *
* @return void * @return void
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\LinkTag * Test class for \Barryvdh\Reflection\DocBlock\Tag\LinkTag
* *
* @author Ben Selby <benmatselby@gmail.com> * @author Ben Selby <benmatselby@gmail.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -23,7 +23,7 @@ namespace phpDocumentor\Reflection\DocBlock\Tag;
class LinkTagTest extends \PHPUnit_Framework_TestCase class LinkTagTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\LinkTag can create * Test that the \Barryvdh\Reflection\DocBlock\Tag\LinkTag can create
* a link for the @link doc block. * a link for the @link doc block.
* *
* @param string $type * @param string $type
@@ -32,7 +32,7 @@ class LinkTagTest extends \PHPUnit_Framework_TestCase
* @param string $exDescription * @param string $exDescription
* @param string $exLink * @param string $exLink
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\LinkTag * @covers \Barryvdh\Reflection\DocBlock\Tag\LinkTag
* @dataProvider provideDataForConstuctor * @dataProvider provideDataForConstuctor
* *
* @return void * @return void
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\MethodTag * Test class for \Barryvdh\Reflection\DocBlock\Tag\MethodTag
* *
* @author Mike van Riel <mike.vanriel@naenius.com> * @author Mike van Riel <mike.vanriel@naenius.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -34,7 +34,7 @@ class MethodTagTest extends \PHPUnit_Framework_TestCase
* @param string $description The short description mentioned in the * @param string $description The short description mentioned in the
* signature. * signature.
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\MethodTag * @covers \Barryvdh\Reflection\DocBlock\Tag\MethodTag
* @dataProvider getTestSignatures * @dataProvider getTestSignatures
* *
* @return void * @return void
@@ -44,6 +44,7 @@ class MethodTagTest extends \PHPUnit_Framework_TestCase
$valid, $valid,
$expected_name, $expected_name,
$expected_return, $expected_return,
$expected_isStatic,
$paramCount, $paramCount,
$description $description
) { ) {
@@ -64,64 +65,82 @@ class MethodTagTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($expected_name, $tag->getMethodName()); $this->assertEquals($expected_name, $tag->getMethodName());
$this->assertEquals($expected_return, $tag->getType()); $this->assertEquals($expected_return, $tag->getType());
$this->assertEquals($description, $tag->getDescription()); $this->assertEquals($description, $tag->getDescription());
$this->assertEquals($expected_isStatic, $tag->isStatic());
$this->assertCount($paramCount, $tag->getArguments()); $this->assertCount($paramCount, $tag->getArguments());
} }
public function getTestSignatures() public function getTestSignatures()
{ {
return array( return array(
array( // TODO: Verify this case
'foo', // array(
false, 'foo', '', 0, '' // 'foo',
), // false, 'foo', '', false, 0, ''
// ),
array( array(
'foo()', 'foo()',
true, 'foo', 'void', 0, '' true, 'foo', 'void', false, 0, ''
), ),
array( array(
'foo() description', 'foo() description',
true, 'foo', 'void', 0, 'description' true, 'foo', 'void', false, 0, 'description'
), ),
array( array(
'int foo()', 'int foo()',
true, 'foo', 'int', 0, '' true, 'foo', 'int', false, 0, ''
), ),
array( array(
'int foo() description', 'int foo() description',
true, 'foo', 'int', 0, 'description' true, 'foo', 'int', false, 0, 'description'
), ),
array( array(
'int foo($a, $b)', 'int foo($a, $b)',
true, 'foo', 'int', 2, '' true, 'foo', 'int', false, 2, ''
), ),
array( array(
'int foo() foo(int $a, int $b)', 'int foo() foo(int $a, int $b)',
true, 'foo', 'int', 2, '' true, 'foo', 'int', false, 2, ''
), ),
array( array(
'int foo(int $a, int $b)', 'int foo(int $a, int $b)',
true, 'foo', 'int', 2, '' true, 'foo', 'int', false, 2, ''
), ),
array( array(
'null|int foo(int $a, int $b)', 'null|int foo(int $a, int $b)',
true, 'foo', 'null|int', 2, '' true, 'foo', 'null|int', false, 2, ''
), ),
array( array(
'int foo(null|int $a, int $b)', 'int foo(null|int $a, int $b)',
true, 'foo', 'int', 2, '' true, 'foo', 'int', false, 2, ''
), ),
array( array(
'\Exception foo() foo(Exception $a, Exception $b)', '\Exception foo() foo(Exception $a, Exception $b)',
true, 'foo', '\Exception', 2, '' true, 'foo', '\Exception', false, 2, ''
), ),
array( array(
'int foo() foo(Exception $a, Exception $b) description', 'int foo() foo(Exception $a, Exception $b) description',
true, 'foo', 'int', 2, 'description' true, 'foo', 'int', false, 2, 'description'
), ),
array( array(
'int foo() foo(\Exception $a, \Exception $b) description', 'int foo() foo(\Exception $a, \Exception $b) description',
true, 'foo', 'int', 2, 'description' true, 'foo', 'int', false, 2, 'description'
), ),
array(
'void()',
true, 'void', 'void', false, 0, ''
),
array(
'static foo()',
true, 'foo', 'static', false, 0, ''
),
array(
'static void foo()',
true, 'foo', 'void', true, 0, ''
),
array(
'static static foo()',
true, 'foo', 'static', true, 0, ''
)
); );
} }
} }
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\ParamTag * Test class for \Barryvdh\Reflection\DocBlock\ParamTag
* *
* @author Mike van Riel <mike.vanriel@naenius.com> * @author Mike van Riel <mike.vanriel@naenius.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -23,7 +23,7 @@ namespace phpDocumentor\Reflection\DocBlock\Tag;
class ParamTagTest extends \PHPUnit_Framework_TestCase class ParamTagTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\ParamTag can * Test that the \Barryvdh\Reflection\DocBlock\Tag\ParamTag can
* understand the @param DocBlock. * understand the @param DocBlock.
* *
* @param string $type * @param string $type
@@ -33,7 +33,7 @@ class ParamTagTest extends \PHPUnit_Framework_TestCase
* @param string $extractedVarName * @param string $extractedVarName
* @param string $extractedDescription * @param string $extractedDescription
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\ParamTag * @covers \Barryvdh\Reflection\DocBlock\Tag\ParamTag
* @dataProvider provideDataForConstructor * @dataProvider provideDataForConstructor
* *
* @return void * @return void
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\ReturnTag * Test class for \Barryvdh\Reflection\DocBlock\ReturnTag
* *
* @author Mike van Riel <mike.vanriel@naenius.com> * @author Mike van Riel <mike.vanriel@naenius.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -23,7 +23,7 @@ namespace phpDocumentor\Reflection\DocBlock\Tag;
class ReturnTagTest extends \PHPUnit_Framework_TestCase class ReturnTagTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\ReturnTag can * Test that the \Barryvdh\Reflection\DocBlock\Tag\ReturnTag can
* understand the @return DocBlock. * understand the @return DocBlock.
* *
* @param string $type * @param string $type
@@ -32,7 +32,7 @@ class ReturnTagTest extends \PHPUnit_Framework_TestCase
* @param string $extractedTypes * @param string $extractedTypes
* @param string $extractedDescription * @param string $extractedDescription
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\ReturnTag * @covers \Barryvdh\Reflection\DocBlock\Tag\ReturnTag
* @dataProvider provideDataForConstructor * @dataProvider provideDataForConstructor
* *
* @return void * @return void
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\SeeTag * Test class for \Barryvdh\Reflection\DocBlock\Tag\SeeTag
* *
* @author Daniel O'Connor <daniel.oconnor@gmail.com> * @author Daniel O'Connor <daniel.oconnor@gmail.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -31,7 +31,7 @@ class SeeTagTest extends \PHPUnit_Framework_TestCase
* @param string $exContent * @param string $exContent
* @param string $exReference * @param string $exReference
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\SeeTag * @covers \Barryvdh\Reflection\DocBlock\Tag\SeeTag
* @dataProvider provideDataForConstuctor * @dataProvider provideDataForConstuctor
* *
* @return void * @return void
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\SinceTag * Test class for \Barryvdh\Reflection\DocBlock\Tag\SinceTag
* *
* @author Vasil Rangelov <boen.robot@gmail.com> * @author Vasil Rangelov <boen.robot@gmail.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -23,7 +23,7 @@ namespace phpDocumentor\Reflection\DocBlock\Tag;
class SinceTagTest extends \PHPUnit_Framework_TestCase class SinceTagTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\LinkTag can create * Test that the \Barryvdh\Reflection\DocBlock\Tag\LinkTag can create
* a link for the @since doc block. * a link for the @since doc block.
* *
* @param string $type * @param string $type
@@ -32,7 +32,7 @@ class SinceTagTest extends \PHPUnit_Framework_TestCase
* @param string $exDescription * @param string $exDescription
* @param string $exVersion * @param string $exVersion
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\SinceTag * @covers \Barryvdh\Reflection\DocBlock\Tag\SinceTag
* @dataProvider provideDataForConstuctor * @dataProvider provideDataForConstuctor
* *
* @return void * @return void
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\SourceTag * Test class for \Barryvdh\Reflection\DocBlock\Tag\SourceTag
* *
* @author Vasil Rangelov <boen.robot@gmail.com> * @author Vasil Rangelov <boen.robot@gmail.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -23,7 +23,7 @@ namespace phpDocumentor\Reflection\DocBlock\Tag;
class SourceTagTest extends \PHPUnit_Framework_TestCase class SourceTagTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\SourceTag can * Test that the \Barryvdh\Reflection\DocBlock\Tag\SourceTag can
* understand the @source DocBlock. * understand the @source DocBlock.
* *
* @param string $type * @param string $type
@@ -32,7 +32,7 @@ class SourceTagTest extends \PHPUnit_Framework_TestCase
* @param string $exStartingLine * @param string $exStartingLine
* @param string $exLineCount * @param string $exLineCount
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\SourceTag * @covers \Barryvdh\Reflection\DocBlock\Tag\SourceTag
* @dataProvider provideDataForConstuctor * @dataProvider provideDataForConstuctor
* *
* @return void * @return void
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\ThrowsTag * Test class for \Barryvdh\Reflection\DocBlock\ThrowsTag
* *
* @author Mike van Riel <mike.vanriel@naenius.com> * @author Mike van Riel <mike.vanriel@naenius.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -23,7 +23,7 @@ namespace phpDocumentor\Reflection\DocBlock\Tag;
class ThrowsTagTest extends \PHPUnit_Framework_TestCase class ThrowsTagTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag can * Test that the \Barryvdh\Reflection\DocBlock\Tag\ThrowsTag can
* understand the @throws DocBlock. * understand the @throws DocBlock.
* *
* @param string $type * @param string $type
@@ -32,7 +32,7 @@ class ThrowsTagTest extends \PHPUnit_Framework_TestCase
* @param string $extractedTypes * @param string $extractedTypes
* @param string $extractedDescription * @param string $extractedDescription
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\ThrowsTag * @covers \Barryvdh\Reflection\DocBlock\Tag\ThrowsTag
* @dataProvider provideDataForConstructor * @dataProvider provideDataForConstructor
* *
* @return void * @return void
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\UsesTag * Test class for \Barryvdh\Reflection\DocBlock\Tag\UsesTag
* *
* @author Daniel O'Connor <daniel.oconnor@gmail.com> * @author Daniel O'Connor <daniel.oconnor@gmail.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -23,7 +23,7 @@ namespace phpDocumentor\Reflection\DocBlock\Tag;
class UsesTagTest extends \PHPUnit_Framework_TestCase class UsesTagTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\UsesTag can create * Test that the \Barryvdh\Reflection\DocBlock\Tag\UsesTag can create
* a link for the @uses doc block. * a link for the @uses doc block.
* *
* @param string $type * @param string $type
@@ -31,7 +31,7 @@ class UsesTagTest extends \PHPUnit_Framework_TestCase
* @param string $exContent * @param string $exContent
* @param string $exReference * @param string $exReference
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\UsesTag * @covers \Barryvdh\Reflection\DocBlock\Tag\UsesTag
* @dataProvider provideDataForConstuctor * @dataProvider provideDataForConstuctor
* *
* @return void * @return void
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\VarTag * Test class for \Barryvdh\Reflection\DocBlock\Tag\VarTag
* *
* @author Daniel O'Connor <daniel.oconnor@gmail.com> * @author Daniel O'Connor <daniel.oconnor@gmail.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -23,7 +23,7 @@ namespace phpDocumentor\Reflection\DocBlock\Tag;
class VarTagTest extends \PHPUnit_Framework_TestCase class VarTagTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\VarTag can * Test that the \Barryvdh\Reflection\DocBlock\Tag\VarTag can
* understand the @var doc block. * understand the @var doc block.
* *
* @param string $type * @param string $type
@@ -32,7 +32,7 @@ class VarTagTest extends \PHPUnit_Framework_TestCase
* @param string $exVariable * @param string $exVariable
* @param string $exDescription * @param string $exDescription
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\VarTag * @covers \Barryvdh\Reflection\DocBlock\Tag\VarTag
* @dataProvider provideDataForConstuctor * @dataProvider provideDataForConstuctor
* *
* @return void * @return void
@@ -10,10 +10,10 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Tag; namespace Barryvdh\Reflection\DocBlock\Tag;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\VersionTag * Test class for \Barryvdh\Reflection\DocBlock\Tag\VersionTag
* *
* @author Vasil Rangelov <boen.robot@gmail.com> * @author Vasil Rangelov <boen.robot@gmail.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -23,7 +23,7 @@ namespace phpDocumentor\Reflection\DocBlock\Tag;
class VersionTagTest extends \PHPUnit_Framework_TestCase class VersionTagTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\LinkTag can create * Test that the \Barryvdh\Reflection\DocBlock\Tag\LinkTag can create
* a link for the @version doc block. * a link for the @version doc block.
* *
* @param string $type * @param string $type
@@ -32,7 +32,7 @@ class VersionTagTest extends \PHPUnit_Framework_TestCase
* @param string $exDescription * @param string $exDescription
* @param string $exVersion * @param string $exVersion
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag\VersionTag * @covers \Barryvdh\Reflection\DocBlock\Tag\VersionTag
* @dataProvider provideDataForConstuctor * @dataProvider provideDataForConstuctor
* *
* @return void * @return void
@@ -10,13 +10,13 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock; namespace Barryvdh\Reflection\DocBlock;
use phpDocumentor\Reflection\DocBlock; use Barryvdh\Reflection\DocBlock;
use phpDocumentor\Reflection\DocBlock\Context; use Barryvdh\Reflection\DocBlock\Context;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Tag\VarTag * Test class for \Barryvdh\Reflection\DocBlock\Tag\VarTag
* *
* @author Daniel O'Connor <daniel.oconnor@gmail.com> * @author Daniel O'Connor <daniel.oconnor@gmail.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -37,7 +37,7 @@ class TagTest extends \PHPUnit_Framework_TestCase
} }
/** /**
* @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler * @covers \Barryvdh\Reflection\DocBlock\Tag::registerTagHandler
* *
* @return void * @return void
*/ */
@@ -70,7 +70,7 @@ class TagTest extends \PHPUnit_Framework_TestCase
} }
/** /**
* @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler * @covers \Barryvdh\Reflection\DocBlock\Tag::registerTagHandler
* *
* @return void * @return void
*/ */
@@ -93,7 +93,7 @@ class TagTest extends \PHPUnit_Framework_TestCase
include 'data:text/plain;base64,'. base64_encode( include 'data:text/plain;base64,'. base64_encode(
<<<TAG_HANDLER <<<TAG_HANDLER
<?php <?php
class MyTagHandler extends \phpDocumentor\Reflection\DocBlock\Tag {} class MyTagHandler extends \Barryvdh\Reflection\DocBlock\Tag {}
TAG_HANDLER TAG_HANDLER
); );
@@ -118,8 +118,8 @@ TAG_HANDLER
/** /**
* @depends testTagHandlerCorrectRegistration * @depends testTagHandlerCorrectRegistration
* @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler * @covers \Barryvdh\Reflection\DocBlock\Tag::registerTagHandler
* @covers \phpDocumentor\Reflection\DocBlock\Tag::createInstance * @covers \Barryvdh\Reflection\DocBlock\Tag::createInstance
* *
* @return void * @return void
*/ */
@@ -162,8 +162,8 @@ TAG_HANDLER
/** /**
* @depends testTagHandlerCorrectRegistration * @depends testTagHandlerCorrectRegistration
* @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler * @covers \Barryvdh\Reflection\DocBlock\Tag::registerTagHandler
* @covers \phpDocumentor\Reflection\DocBlock\Tag::createInstance * @covers \Barryvdh\Reflection\DocBlock\Tag::createInstance
* *
* @return void * @return void
*/ */
@@ -201,7 +201,7 @@ TAG_HANDLER
} }
/** /**
* @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler * @covers \Barryvdh\Reflection\DocBlock\Tag::registerTagHandler
* *
* @return void * @return void
*/ */
@@ -232,7 +232,7 @@ TAG_HANDLER
} }
/** /**
* @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler * @covers \Barryvdh\Reflection\DocBlock\Tag::registerTagHandler
* *
* @return void * @return void
*/ */
@@ -265,14 +265,14 @@ TAG_HANDLER
} }
/** /**
* Test that the \phpDocumentor\Reflection\DocBlock\Tag\VarTag can * Test that the \Barryvdh\Reflection\DocBlock\Tag\VarTag can
* understand the @var doc block. * understand the @var doc block.
* *
* @param string $type * @param string $type
* @param string $content * @param string $content
* @param string $exDescription * @param string $exDescription
* *
* @covers \phpDocumentor\Reflection\DocBlock\Tag * @covers \Barryvdh\Reflection\DocBlock\Tag
* @dataProvider provideDataForConstuctor * @dataProvider provideDataForConstuctor
* *
* @return void * @return void
@@ -10,14 +10,14 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection\DocBlock\Type; namespace Barryvdh\Reflection\DocBlock\Type;
use phpDocumentor\Reflection\DocBlock\Context; use Barryvdh\Reflection\DocBlock\Context;
/** /**
* Test class for \phpDocumentor\Reflection\DocBlock\Type\Collection * Test class for \Barryvdh\Reflection\DocBlock\Type\Collection
* *
* @covers phpDocumentor\Reflection\DocBlock\Type\Collection * @covers Barryvdh\Reflection\DocBlock\Type\Collection
* *
* @author Mike van Riel <mike.vanriel@naenius.com> * @author Mike van Riel <mike.vanriel@naenius.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -27,8 +27,8 @@ use phpDocumentor\Reflection\DocBlock\Context;
class CollectionTest extends \PHPUnit_Framework_TestCase class CollectionTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* @covers phpDocumentor\Reflection\DocBlock\Type\Collection::__construct * @covers Barryvdh\Reflection\DocBlock\Type\Collection::__construct
* @covers phpDocumentor\Reflection\DocBlock\Type\Collection::getContext * @covers Barryvdh\Reflection\DocBlock\Type\Collection::getContext
* *
* @return void * @return void
*/ */
@@ -41,7 +41,7 @@ class CollectionTest extends \PHPUnit_Framework_TestCase
} }
/** /**
* @covers phpDocumentor\Reflection\DocBlock\Type\Collection::__construct * @covers Barryvdh\Reflection\DocBlock\Type\Collection::__construct
* *
* @return void * @return void
*/ */
@@ -52,7 +52,7 @@ class CollectionTest extends \PHPUnit_Framework_TestCase
} }
/** /**
* @covers phpDocumentor\Reflection\DocBlock\Type\Collection::__construct * @covers Barryvdh\Reflection\DocBlock\Type\Collection::__construct
* *
* @return void * @return void
*/ */
@@ -69,7 +69,7 @@ class CollectionTest extends \PHPUnit_Framework_TestCase
} }
/** /**
* @covers phpDocumentor\Reflection\DocBlock\Type\Collection::__construct * @covers Barryvdh\Reflection\DocBlock\Type\Collection::__construct
* *
* @return void * @return void
*/ */
@@ -88,7 +88,7 @@ class CollectionTest extends \PHPUnit_Framework_TestCase
* @param array $expected * @param array $expected
* *
* @dataProvider provideTypesToExpand * @dataProvider provideTypesToExpand
* @covers phpDocumentor\Reflection\DocBlock\Type\Collection::add * @covers Barryvdh\Reflection\DocBlock\Type\Collection::add
* *
* @return void * @return void
*/ */
@@ -108,7 +108,7 @@ class CollectionTest extends \PHPUnit_Framework_TestCase
* @param array $expected * @param array $expected
* *
* @dataProvider provideTypesToExpandWithoutNamespace * @dataProvider provideTypesToExpandWithoutNamespace
* @covers phpDocumentor\Reflection\DocBlock\Type\Collection::add * @covers Barryvdh\Reflection\DocBlock\Type\Collection::add
* *
* @return void * @return void
*/ */
@@ -124,7 +124,27 @@ class CollectionTest extends \PHPUnit_Framework_TestCase
} }
/** /**
* @covers phpDocumentor\Reflection\DocBlock\Type\Collection::add * @param string $fixture
* @param array $expected
*
* @dataProvider provideTypesToExpandWithPropertyOrMethod
* @covers Barryvdh\Reflection\DocBlock\Type\Collection::add
*
* @return void
*/
public function testAddMethodsAndProperties($fixture, $expected)
{
$collection = new Collection(
array(),
new Context(null, array('LinkDescriptor' => '\phpDocumentor\LinkDescriptor'))
);
$collection->add($fixture);
$this->assertSame($expected, $collection->getArrayCopy());
}
/**
* @covers Barryvdh\Reflection\DocBlock\Type\Collection::add
* @expectedException InvalidArgumentException * @expectedException InvalidArgumentException
* *
* @return void * @return void
@@ -177,6 +197,14 @@ class CollectionTest extends \PHPUnit_Framework_TestCase
'DocBlock[]|int[]', 'DocBlock[]|int[]',
array($namespace.'DocBlock[]', 'int[]') array($namespace.'DocBlock[]', 'int[]')
), ),
array(
'LinkDescriptor::setLink()',
array($namespace.'LinkDescriptor::setLink()')
),
array(
'Alias\LinkDescriptor::setLink()',
array('\My\Space\Aliasing\LinkDescriptor::setLink()')
),
); );
} }
@@ -192,4 +220,34 @@ class CollectionTest extends \PHPUnit_Framework_TestCase
{ {
return $this->provideTypesToExpand($method, '\\'); return $this->provideTypesToExpand($method, '\\');
} }
/**
* Returns the method and property types and their expected values to test
* the retrieval of types.
*
* @param string $method Name of the method consuming this data provider.
*
* @return string[]
*/
public function provideTypesToExpandWithPropertyOrMethod($method)
{
return array(
array(
'LinkDescriptor::setLink()',
array('\phpDocumentor\LinkDescriptor::setLink()')
),
array(
'phpDocumentor\LinkDescriptor::setLink()',
array('\phpDocumentor\LinkDescriptor::setLink()')
),
array(
'LinkDescriptor::$link',
array('\phpDocumentor\LinkDescriptor::$link')
),
array(
'phpDocumentor\LinkDescriptor::$link',
array('\phpDocumentor\LinkDescriptor::$link')
),
);
}
} }
@@ -10,13 +10,14 @@
* @link http://phpdoc.org * @link http://phpdoc.org
*/ */
namespace phpDocumentor\Reflection; namespace Barryvdh\Reflection;
use phpDocumentor\Reflection\DocBlock\Context; use Barryvdh\Reflection\DocBlock\Context;
use phpDocumentor\Reflection\DocBlock\Location; use Barryvdh\Reflection\DocBlock\Location;
use Barryvdh\Reflection\DocBlock\Tag\ReturnTag;
/** /**
* Test class for phpDocumentor\Reflection\DocBlock * Test class for Barryvdh\Reflection\DocBlock
* *
* @author Mike van Riel <mike.vanriel@naenius.com> * @author Mike van Riel <mike.vanriel@naenius.com>
* @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
@@ -26,7 +27,7 @@ use phpDocumentor\Reflection\DocBlock\Location;
class DocBlockTest extends \PHPUnit_Framework_TestCase class DocBlockTest extends \PHPUnit_Framework_TestCase
{ {
/** /**
* @covers \phpDocumentor\Reflection\DocBlock * @covers \Barryvdh\Reflection\DocBlock
* *
* @return void * @return void
*/ */
@@ -34,9 +35,9 @@ class DocBlockTest extends \PHPUnit_Framework_TestCase
{ {
$fixture = <<<DOCBLOCK $fixture = <<<DOCBLOCK
/** /**
* This is a short description. * This is a short description
* *
* This is a long description. * This is a long description
* *
* @see \MyClass * @see \MyClass
* @return void * @return void
@@ -48,11 +49,11 @@ DOCBLOCK;
new Location(2) new Location(2)
); );
$this->assertEquals( $this->assertEquals(
'This is a short description.', 'This is a short description',
$object->getShortDescription() $object->getShortDescription()
); );
$this->assertEquals( $this->assertEquals(
'This is a long description.', 'This is a long description',
$object->getLongDescription()->getContents() $object->getLongDescription()->getContents()
); );
$this->assertCount(2, $object->getTags()); $this->assertCount(2, $object->getTags());
@@ -69,8 +70,8 @@ DOCBLOCK;
} }
/** /**
* @covers \phpDocumentor\Reflection\DocBlock::splitDocBlock * @covers \Barryvdh\Reflection\DocBlock::splitDocBlock
* *
* @return void * @return void
*/ */
public function testConstructWithTagsOnly() public function testConstructWithTagsOnly()
@@ -91,7 +92,42 @@ DOCBLOCK;
} }
/** /**
* @covers \phpDocumentor\Reflection\DocBlock::cleanInput * @covers \Barryvdh\Reflection\DocBlock::isTemplateStart
*/
public function testIfStartOfTemplateIsDiscovered()
{
$fixture = <<<DOCBLOCK
/**#@+
* @see \MyClass
* @return void
*/
DOCBLOCK;
$object = new DocBlock($fixture);
$this->assertEquals('', $object->getShortDescription());
$this->assertEquals('', $object->getLongDescription()->getContents());
$this->assertCount(2, $object->getTags());
$this->assertTrue($object->hasTag('see'));
$this->assertTrue($object->hasTag('return'));
$this->assertFalse($object->hasTag('category'));
$this->assertTrue($object->isTemplateStart());
}
/**
* @covers \Barryvdh\Reflection\DocBlock::isTemplateEnd
*/
public function testIfEndOfTemplateIsDiscovered()
{
$fixture = <<<DOCBLOCK
/**#@-*/
DOCBLOCK;
$object = new DocBlock($fixture);
$this->assertEquals('', $object->getShortDescription());
$this->assertEquals('', $object->getLongDescription()->getContents());
$this->assertTrue($object->isTemplateEnd());
}
/**
* @covers \Barryvdh\Reflection\DocBlock::cleanInput
* *
* @return void * @return void
*/ */
@@ -108,7 +144,7 @@ DOCBLOCK;
} }
/** /**
* @covers \phpDocumentor\Reflection\DocBlock::__construct * @covers \Barryvdh\Reflection\DocBlock::__construct
* *
* @return void * @return void
*/ */
@@ -116,7 +152,7 @@ DOCBLOCK;
{ {
$object = new DocBlock(new \ReflectionClass($this)); $object = new DocBlock(new \ReflectionClass($this));
$this->assertEquals( $this->assertEquals(
'Test class for phpDocumentor\Reflection\DocBlock', 'Test class for Barryvdh\Reflection\DocBlock',
$object->getShortDescription() $object->getShortDescription()
); );
$this->assertEquals('', $object->getLongDescription()->getContents()); $this->assertEquals('', $object->getLongDescription()->getContents());
@@ -142,7 +178,8 @@ DOCBLOCK;
{ {
$fixture = <<<DOCBLOCK $fixture = <<<DOCBLOCK
/** /**
* This is a short description. This is a long description. * This is a short description.
* This is a long description.
* This is a continuation of the long description. * This is a continuation of the long description.
*/ */
DOCBLOCK; DOCBLOCK;
@@ -159,7 +196,7 @@ DOCBLOCK;
} }
/** /**
* @covers \phpDocumentor\Reflection\DocBlock::parseTags * @covers \Barryvdh\Reflection\DocBlock::parseTags
* @expectedException \LogicException * @expectedException \LogicException
* *
* @return void * @return void
@@ -173,7 +210,7 @@ DOCBLOCK;
include 'data:text/plain;base64,'. base64_encode( include 'data:text/plain;base64,'. base64_encode(
<<<DOCBLOCK_EXTENSION <<<DOCBLOCK_EXTENSION
<?php <?php
class MyReflectionDocBlock extends \phpDocumentor\Reflection\DocBlock { class MyReflectionDocBlock extends \Barryvdh\Reflection\DocBlock {
protected function splitDocBlock(\$comment) { protected function splitDocBlock(\$comment) {
return array('', '', 'Invalid tag block'); return array('', '', 'Invalid tag block');
} }
@@ -225,7 +262,7 @@ DOCBLOCK;
/** /**
* @depends testConstructFromReflector * @depends testConstructFromReflector
* @covers \phpDocumentor\Reflection\DocBlock::getTagsByName * @covers \Barryvdh\Reflection\DocBlock::getTagsByName
* *
* @return void * @return void
*/ */
@@ -238,7 +275,7 @@ DOCBLOCK;
/** /**
* @depends testConstructWithTagsOnly * @depends testConstructWithTagsOnly
* @covers \phpDocumentor\Reflection\DocBlock::parseTags * @covers \Barryvdh\Reflection\DocBlock::parseTags
* *
* @return void * @return void
*/ */
@@ -256,7 +293,7 @@ DOCBLOCK;
/** /**
* @depends testConstructWithTagsOnly * @depends testConstructWithTagsOnly
* @covers \phpDocumentor\Reflection\DocBlock::parseTags * @covers \Barryvdh\Reflection\DocBlock::parseTags
* *
* @return void * @return void
*/ */
@@ -271,12 +308,15 @@ DOCBLOCK;
*/ */
DOCBLOCK; DOCBLOCK;
$object = new DocBlock($fixture); $object = new DocBlock($fixture);
$this->assertCount(1, $object->getTags()); $this->assertCount(1, $tags = $object->getTags());
/** @var ReturnTag $tag */
$tag = reset($tags);
$this->assertEquals("Content on\n multiple lines.\n\n One more, after the break.", $tag->getDescription());
} }
/** /**
* @depends testConstructWithTagsOnly * @depends testConstructWithTagsOnly
* @covers \phpDocumentor\Reflection\DocBlock::getTagsByName * @covers \Barryvdh\Reflection\DocBlock::getTagsByName
* *
* @return void * @return void
*/ */