Increased unit test coverage of DocBlock;

Moved the tag block checks outside (and prior to) the tag line loop;
Doc and CS fixes.
This commit is contained in:
Vasil Rangelov
2012-11-10 13:24:46 +02:00
parent 233e4b3ff7
commit 082c9354d0
11 changed files with 71 additions and 36 deletions
+23 -19
View File
@@ -200,30 +200,32 @@ class DocBlock implements \Reflector
protected function parseTags($tags)
{
$result = array();
foreach (explode("\n", trim($tags)) as $tag_line) {
if (trim($tag_line) === '') {
continue;
$tags = trim($tags);
if ('' !== $tags) {
if ('@' !== $tags[0]) {
throw new \LogicException(
'A tag block started with text instead of an actual tag,'
. ' this makes the tag block invalid: ' . $tags
);
}
if (isset($tag_line[0]) && ($tag_line[0] === '@')) {
$result[] = $tag_line;
} else {
if (count($result) == 0) {
throw new \LogicException(
'A tag block started with text instead of an actual tag,'
. ' this makes the tag block invalid: ' . $tags
);
foreach (explode("\n", $tags) as $tag_line) {
if (trim($tag_line) === '') {
continue;
}
$result[count($result) - 1] .= PHP_EOL . $tag_line;
if (isset($tag_line[0]) && ($tag_line[0] === '@')) {
$result[] = $tag_line;
} else {
$result[count($result) - 1] .= PHP_EOL . $tag_line;
}
}
}
// create proper Tag objects
foreach ($result as $key => $tag_line) {
$tag = DocBlock\Tag::createInstance($tag_line);
$tag->setDocBlock($this);
$result[$key] = $tag;
// create proper Tag objects
foreach ($result as $key => $tag_line) {
$tag = DocBlock\Tag::createInstance($tag_line);
$tag->setDocBlock($this);
$result[$key] = $tag;
}
}
$this->tags = $result;
@@ -388,6 +390,7 @@ class DocBlock implements \Reflector
* implement it.
*
* @return string
* @codeCoverageIgnore Not yet implemented
*/
public static function export()
{
@@ -399,6 +402,7 @@ class DocBlock implements \Reflector
* BUT this throws an exception at this point).
*
* @return string
* @codeCoverageIgnore Not yet implemented
*/
public function __toString()
{
@@ -100,7 +100,7 @@ class LongDescription implements \Reflector
$this->parsedContents[$i]
);
}
//In order to allow "literal" inline tags, the otherwise invalid
//sequence "{@}" is changed to "@", and "{}" is changed to "}".
//See unit tests for examples.
@@ -153,6 +153,7 @@ class LongDescription implements \Reflector
* and implement it.
*
* @return void
* @codeCoverageIgnore Not yet implemented
*/
public static function export()
{
@@ -164,9 +165,10 @@ class LongDescription implements \Reflector
* BUT this throws an exception at this point).
*
* @return string
* @codeCoverageIgnore Not yet implemented
*/
public function __toString()
{
return 'Not yet implemented';
}
}
}
@@ -173,6 +173,7 @@ class Tag implements \Reflector
* @todo determine the exact format as used by PHP Reflection and implement it.
*
* @return void
* @codeCoverageIgnore Not yet implemented
*/
public static function export()
{
@@ -184,6 +185,7 @@ class Tag implements \Reflector
* BUT this throws an exception at this point).
*
* @return string
* @codeCoverageIgnore Not yet implemented
*/
public function __toString()
{