mirror of
https://github.com/barryvdh/ReflectionDocBlock.git
synced 2026-08-18 01:57:13 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d103774cbe | ||
|
|
5a3e22c213 | ||
|
|
b6ff9f9360 | ||
|
|
ffb733ef78 |
@@ -207,7 +207,7 @@ class Serializer
|
|||||||
}
|
}
|
||||||
$text = str_replace("\n", "\n{$indent} * ", $text);
|
$text = str_replace("\n", "\n{$indent} * ", $text);
|
||||||
|
|
||||||
$comment = "{$firstIndent}/**\n{$indent} * {$text}\n{$indent} *\n";
|
$comment = !empty($text)? "{$firstIndent}/**\n{$indent} * {$text}\n{$indent} *\n" : "{$firstIndent}/**\n";
|
||||||
|
|
||||||
$tags = array_values($docblock->getTags());
|
$tags = array_values($docblock->getTags());
|
||||||
|
|
||||||
|
|||||||
@@ -409,6 +409,6 @@ class Tag implements \Reflector
|
|||||||
*/
|
*/
|
||||||
public function __toString()
|
public function __toString()
|
||||||
{
|
{
|
||||||
return "@{$this->getName()} {$this->getContent()}";
|
return trim("@{$this->getName()} {$this->getContent()}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,16 +54,15 @@ class ParamTag extends ReturnTag
|
|||||||
for($pos = 0, $stacks = []; $pos < strlen($rest); $pos++) {
|
for($pos = 0, $stacks = []; $pos < strlen($rest); $pos++) {
|
||||||
$char = $rest[$pos];
|
$char = $rest[$pos];
|
||||||
|
|
||||||
if($char === '<') {
|
if(in_array($char, ['<', '(', '[', '{'])) {
|
||||||
array_unshift($stacks, $char);
|
array_unshift($stacks, $char);
|
||||||
}
|
}
|
||||||
if($char === '(') {
|
if(
|
||||||
array_unshift($stacks, $char);
|
($char === '>' && isset($stacks[0]) && $stacks[0] === '<')
|
||||||
}
|
|| ($char === ')' && isset($stacks[0]) && $stacks[0] === '(')
|
||||||
if($char === '>' && isset($stacks[0]) && $stacks[0] === '<') {
|
|| ($char === ']' && isset($stacks[0]) && $stacks[0] === '[')
|
||||||
array_shift($stacks);
|
|| ($char === '}' && isset($stacks[0]) && $stacks[0] === '{')
|
||||||
}
|
) {
|
||||||
if($char === ')' && isset($stacks[0]) && $stacks[0] === '(') {
|
|
||||||
array_shift($stacks);
|
array_shift($stacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -161,9 +161,9 @@ class Collection extends \ArrayObject
|
|||||||
$type_parts[] = $curr_type;
|
$type_parts[] = $curr_type;
|
||||||
$curr_type = '';
|
$curr_type = '';
|
||||||
} else {
|
} else {
|
||||||
if ($char === '<' || $char === '(') {
|
if (in_array($char, ['<', '(', '[', '{'])) {
|
||||||
$nest_level++;
|
$nest_level++;
|
||||||
} else if ($char === '>' || $char === ')') {
|
} else if (in_array($char, ['>', ')', ']', '}'])) {
|
||||||
$nest_level--;
|
$nest_level--;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,7 +201,13 @@ class Collection extends \ArrayObject
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (preg_match('/^[\w-]+<.*>$/', $type)) {
|
// Check for generics values and array shapes
|
||||||
|
if (preg_match('/^[\w-]+(<.+>|\[.+\]|{.+})$/', $type)) {
|
||||||
|
return $type;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for callable types
|
||||||
|
if (preg_match('/\(.*?(?=\:)/', $type)) {
|
||||||
return $type;
|
return $type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,6 +215,11 @@ class Collection extends \ArrayObject
|
|||||||
return $type;
|
return $type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Literal strings
|
||||||
|
if ($type[0] === '"' || $type[0] === "'") {
|
||||||
|
return $type;
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->isTypeAnArray($type)) {
|
if ($this->isTypeAnArray($type)) {
|
||||||
return $this->expand(substr($type, 0, -2)) . self::OPERATOR_ARRAY;
|
return $this->expand(substr($type, 0, -2)) . self::OPERATOR_ARRAY;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -183,6 +183,24 @@ class ParamTagTest extends TestCase
|
|||||||
'$callback',
|
'$callback',
|
||||||
''
|
''
|
||||||
),
|
),
|
||||||
|
|
||||||
|
// array shapes
|
||||||
|
array(
|
||||||
|
'param',
|
||||||
|
'array{foo: string, bar: int} $array',
|
||||||
|
'array{foo: string, bar: int}',
|
||||||
|
array('array{foo: string, bar: int}'),
|
||||||
|
'$array',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'param',
|
||||||
|
'MyArray[\'key\'] $value',
|
||||||
|
'MyArray[\'key\']',
|
||||||
|
array('MyArray[\'key\']'),
|
||||||
|
'$value',
|
||||||
|
''
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -119,6 +119,13 @@ class ReturnTagTest extends TestCase
|
|||||||
'array<int, string|bool>|string',
|
'array<int, string|bool>|string',
|
||||||
array('array<int, string|bool>', 'string'),
|
array('array<int, string|bool>', 'string'),
|
||||||
'Types of Bobs'
|
'Types of Bobs'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'return',
|
||||||
|
'MyArray[\'key\'] Type of Bobs',
|
||||||
|
'MyArray[\'key\']',
|
||||||
|
array('MyArray[\'key\']'),
|
||||||
|
'Type of Bobs'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -239,6 +239,18 @@ class CollectionTest extends TestCase
|
|||||||
'array<int, string|array<int, bool>>|array<int, float>|string',
|
'array<int, string|array<int, bool>>|array<int, float>|string',
|
||||||
array('array<int, string|array<int, bool>>', 'array<int, float>', 'string')
|
array('array<int, string|array<int, bool>>', 'array<int, float>', 'string')
|
||||||
),
|
),
|
||||||
|
array(
|
||||||
|
'array{ 0: string, 1: string|int }',
|
||||||
|
array('array{ 0: string, 1: string|int }')
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"array{ 'key': string, 'value': string|int }",
|
||||||
|
array("array{ 'key': string, 'value': string|int }")
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"MyArray['bar']",
|
||||||
|
array("MyArray['bar']")
|
||||||
|
),
|
||||||
array(
|
array(
|
||||||
'LinkDescriptor::setLink()',
|
'LinkDescriptor::setLink()',
|
||||||
array($namespace.'LinkDescriptor::setLink()')
|
array($namespace.'LinkDescriptor::setLink()')
|
||||||
@@ -283,6 +295,18 @@ class CollectionTest extends TestCase
|
|||||||
'iterable<string>',
|
'iterable<string>',
|
||||||
array('iterable<string>')
|
array('iterable<string>')
|
||||||
),
|
),
|
||||||
|
array(
|
||||||
|
'callable',
|
||||||
|
array('callable')
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'callable(int, string): int',
|
||||||
|
array('callable(int, string): int')
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"'text'",
|
||||||
|
array("'text'")
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user