Added Tag::getParsedDescription();

Minor performance tweak at LongDescription.
This commit is contained in:
Vasil Rangelov
2012-09-26 16:27:32 +03:00
parent ad4e358fb0
commit c8fe0e4e40
2 changed files with 27 additions and 7 deletions
@@ -38,14 +38,16 @@ class LongDescription implements \Reflector
*/
public function __construct($content)
{
$this->parsedContents = preg_split('/{\@(.+?)\}/uS', $content, null, PREG_SPLIT_DELIM_CAPTURE);
$this->parsedContents = preg_split(
'/\{(\@.*)\}/uS',
$this->contents = trim($content),
null, PREG_SPLIT_DELIM_CAPTURE
);
for ($i=1, $l = count($this->parsedContents); $i<$l; $i += 2) {
$this->parsedContents[$i] = $this->tags[] = Tag::createInstance(
'@' . $this->parsedContents[$i]
$this->parsedContents[$i]
);
}
$this->contents = trim($content);
}
/**
+21 -3
View File
@@ -24,13 +24,16 @@ class Tag implements \Reflector
/** @var string Name of the tag */
protected $tag = '';
/** @var string content of the tag */
/** @var string Content of the tag */
protected $content = '';
/** @var string description of the content of this tag */
/** @var string Description of the content of this tag */
protected $description = '';
/** @var array The description, as an array of strings and Tag objects. */
protected $parsedDescription = null;
/** @var int line number of the tag */
/** @var int Line number of the tag */
protected $line_number = 0;
/** @var \phpDocumentor\Reflection\DocBlock docblock class */
@@ -108,6 +111,21 @@ class Tag implements \Reflector
{
return $this->description;
}
/*
* Returns the parsed text of this description.
*
* @return array An array of strings and tag objects, in the order they
* occur within the description.
*/
public function getParsedDescription()
{
if (null === $this->parsedDescription) {
$description = new LongDescription($this->description);
$this->parsedDescription = $description->getParsedContents();
}
return $this->parsedDescription;
}
/**
* Set the tag line number