This commit is contained in:
Barry vd. Heuvel
2016-06-13 21:28:05 +02:00
29 changed files with 802 additions and 239 deletions
@@ -55,15 +55,15 @@ class Description implements \Reflector
/**
* Sets the text of this description.
*
*
* @param string $content The new text of this description.
*
*
* @return $this
*/
public function setContent($content)
{
$this->contents = trim($content);
$this->parsedContents = null;
return $this;
}
@@ -140,7 +140,7 @@ class Description implements \Reflector
*
* @todo this should become a more intelligent piece of code where the
* configuration contains a setting what format long descriptions are.
*
*
* @codeCoverageIgnore Will be removed soon, in favor of adapters at
* 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();
$result = $markdown->transformMarkdown($result);
}
@@ -171,7 +174,7 @@ class Description implements \Reflector
/**
* Gets the docblock this tag belongs to.
*
*
* @return DocBlock The docblock this description belongs to.
*/
public function getDocBlock()
@@ -181,10 +184,10 @@ class Description implements \Reflector
/**
* Sets the docblock this tag belongs to.
*
*
* @param DocBlock $docblock The new docblock this description belongs to.
* Setting NULL removes any association.
*
*
* @return $this
*/
public function setDocBlock(DocBlock $docblock = null)
@@ -56,7 +56,7 @@ class ExampleTag extends SourceTag
$filePath = '"' . $this->filePath . '"';
}
$this->content = $filePath . ' ' . $this->getContent();
$this->content = $filePath . ' ' . parent::getContent();
}
return $this->content;
@@ -114,9 +114,6 @@ class MethodTag extends ReturnTag
}
}
$this->parsedDescription = null;
} else {
echo date('c') . ' ERR (3): @method contained invalid contents: '
. $this->content . PHP_EOL;
}
return $this;
@@ -23,11 +23,12 @@ use Barryvdh\Reflection\DocBlock\Tag;
*/
class ParamTag extends ReturnTag
{
/**
* @var string
*/
/** @var string */
protected $variableName = '';
/** @var bool determines whether this is a variadic argument */
protected $isVariadic = false;
/**
* {@inheritdoc}
*/
@@ -61,13 +62,18 @@ class ParamTag extends ReturnTag
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])
&& (strlen($parts[0]) > 0)
&& ($parts[0][0] == '$')
&& ($parts[0][0] == '$' || substr($parts[0], 0, 4) === '...$')
) {
$this->variableName = 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));
@@ -100,4 +106,14 @@ class ParamTag extends ReturnTag
$this->content = null;
return $this;
}
/**
* Returns whether this tag is variadic.
*
* @return boolean
*/
public function isVariadic()
{
return $this->isVariadic;
}
}
@@ -166,7 +166,8 @@ class Collection extends \ArrayObject
$namespace_aliases = $this->context->getNamespaceAliases();
// if the first segment is not an alias; prepend namespace name and
// 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();
if ('' !== $namespace) {
$namespace .= self::OPERATOR_NAMESPACE;
@@ -174,6 +175,12 @@ class Collection extends \ArrayObject
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 = implode(self::OPERATOR_NAMESPACE, $type_parts);
}