public function parse($block, array $aliasMap)
{
$this->aliasMap = $aliasMap;
$this->current = null;
$docBlock = $this->factory->getDocBlock();
$lines = $this->prepare($block);
if (count($lines) > 1) {
$this->startParser('description');
}
$buffer = array();
foreach ($lines as $line) {
if ($line == '' || $line == '/') {
if (count($buffer)) {
$buffer[] = '';
}
continue;
}
if ($line[0] == '@') {
if ($this->current !== null) {
$docBlock->appendElement($this->current->getObject($buffer));
}
$buffer = array();
preg_match('/^\\@([a-zA-Z0-9_]+)(.*)$/', $line, $lineParts);
$name = isset($lineParts[1]) ? $lineParts[1] : '(undefined)';
$payload = isset($lineParts[2]) ? trim($lineParts[2]) : '';
$this->startParser($name, $payload);
continue;
}
$buffer[] = $line;
}
if (!$this->current) {
// A Single line docblock with no @ annotation is considered a description
$this->startParser('description');
}
$docBlock->appendElement($this->current->getObject($buffer));
return $docBlock;
}