Move serializer to seperate class

This commit is contained in:
Barry vd. Heuvel
2013-05-26 22:36:31 +02:00
parent f331d328a4
commit eb4ab2c720
2 changed files with 132 additions and 30 deletions
+5 -25
View File
@@ -229,12 +229,12 @@ class DocBlock implements \Reflector
$this->tags = $result; $this->tags = $result;
} }
public function getDescription(){ public function getText(){
$short = $this->getShortDescription(); $short = $this->getShortDescription();
$long = $this->getLongDescription()->getContents(); $long = $this->getLongDescription()->getContents();
if($long){ if($long){
return $short . "\n" . $long; return $short . "\n\n" . $long;
}else{ }else{
return $short; return $short;
} }
@@ -243,11 +243,11 @@ class DocBlock implements \Reflector
/** /**
* Set the short and long description. * Set the short and long description.
* *
* @param $docblock * @param string $docblock
* @return $this * @return $this
*/ */
public function setDescription($docblock){ public function setText($comment){
list($short, $long) = $this->splitDocBlock($docblock); list($short, $long) = $this->splitDocBlock($comment);
$this->short_description = $short; $this->short_description = $short;
$this->long_description = new DocBlock\Description($long, $this); $this->long_description = new DocBlock\Description($long, $this);
return $this; return $this;
@@ -371,26 +371,6 @@ class DocBlock implements \Reflector
return $tag; return $tag;
} }
/**
* Generate a DocBlock Comment
*
* @return string
*/
public function getDocComment($indentation = ''){
$description = str_replace("\n", "\n$indentation * ", $this->getDescription());
$comment = "$indentation/**\n$indentation * $description\n$indentation *\n";
/** @var Tag $tag */
foreach ($this->getTags() as $tag) {
$comment .= $indentation.' * @'. $tag->getName() . " " . $tag->getContent() . "\n";
}
$comment .= $indentation.' */';
return $comment;
}
/** /**
* Builds a string representation of this object. * Builds a string representation of this object.
@@ -0,0 +1,122 @@
<?php
/**
* phpDocumentor
*
* PHP Version 5.3
*
* @author Mike van Riel <[email protected]>
* @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
namespace phpDocumentor\Reflection\DocBlock;
use phpDocumentor\Reflection\DocBlock;
/**
* Serializes a DocBlock instance
*
* @author Barry vd. Heuvel <[email protected]>
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
class Serializer
{
/** @var string The string to indent the comment with */
protected $indentString;
/** @var int The number of times $indentString is repeated */
protected $indent;
/** @var bool Indent the first line */
protected $indentFirstLine;
/** @var int The max length of a description line. */
protected $lineLength = null;
/**
* Create a Serializer instance.
*
* @param string $indentString
* @param int $indent
* @param bool $indentFirstLine
* @internal param string $indentationString The indentation string.
*/
public function __construct($indentString = ' ', $indent = 4, $indentFirstLine = true)
{
$this->indentString = $indentString;
$this->indent = $indent;
$this->indentFirstLine = $indentFirstLine;
}
/**
* @param $indentationString
* @return $this
*/
public function setIndentationString($indentationString)
{
$this->indentation = $indentationString;
return $this;
}
/**
* @param $indent
* @return $this
*/
public function setIndent($indent){
$this->indent = $indent;
return $this;
}
/**
* @param $indentFirstLine
* @return $this
*/
public function setIndentFirstLine($indentFirstLine){
$this->indentFirstLine = $indentFirstLine;
return $this;
}
/**
* @param $lineLength
* @return $this
*/
public function setLineLength($lineLength){
$this->lineLength = $lineLength;
return $this;
}
/**
* Generate a DocBlock Comment
*
* @param DocBlock The DocBlock to serialize
* @return string
*/
public function getDocComment($phpdoc){
$indent = '';
for($i=0;$i<$this->indent;$i++){
$indent .= $this->indentString;
}
$firstIndent = $this->indentFirstLine ? $indent : '';
$description = $phpdoc->getText();
if($this->lineLength){
$description = wordwrap($description, $this->lineLength);
}
$description = str_replace("\n", "\n$indent * ", $description);
$comment = "$firstIndent/**\n$indent * $description\n$indent *\n";
/** @var Tag $tag */
foreach ($phpdoc->getTags() as $tag) {
$comment .= $indent.' * @'. $tag->getName() . " " . $tag->getContent() . "\n";
}
$comment .= $indent.' */';
return $comment;
}
}