diff --git a/examples/03-reconstituting-a-docblock.php b/examples/03-reconstituting-a-docblock.php index 6bc10ba..482a6dd 100644 --- a/examples/03-reconstituting-a-docblock.php +++ b/examples/03-reconstituting-a-docblock.php @@ -20,7 +20,7 @@ $factory = DocBlockFactory::createInstance(); $docblock = $factory->create($docComment); // Create the serializer that will reconstitute the DocBlock back to its original form. -$serializer = new Serializer(); +$serializer = new Serializer(0, '', true, null, null, PHP_EOL); // Reconstitution is performed by the `getDocComment()` method. $reconstitutedDocComment = $serializer->getDocComment($docblock); diff --git a/examples/04-adding-your-own-tag.php b/examples/04-adding-your-own-tag.php index 63ba5bf..33affb1 100644 --- a/examples/04-adding-your-own-tag.php +++ b/examples/04-adding-your-own-tag.php @@ -126,5 +126,5 @@ $customTagObjects = $docblock->getTagsByName('my-tag'); // As an experiment: let's reconstitute the DocBlock and observe that because we added a __toString() method // to the tag class that we can now also see it. -$serializer = new Serializer(); +$serializer = new Serializer(0, '',true, null, null, PHP_EOL); $reconstitutedDocComment = $serializer->getDocComment($docblock); diff --git a/src/DocBlock/Serializer.php b/src/DocBlock/Serializer.php index 37f4fb8..59e1671 100644 --- a/src/DocBlock/Serializer.php +++ b/src/DocBlock/Serializer.php @@ -42,6 +42,10 @@ class Serializer /** @var Formatter A custom tag formatter. */ protected $tagFormatter; + /** + * @var string + */ + private $lineEnding; /** * Create a Serializer instance. @@ -51,19 +55,22 @@ class Serializer * @param bool $indentFirstLine Whether to indent the first line. * @param int|null $lineLength The max length of a line or NULL to disable line wrapping. * @param Formatter $tagFormatter A custom tag formatter, defaults to PassthroughFormatter. + * @param string $lineEnding Line ending used in the output, by default \n is used. */ public function __construct( int $indent = 0, string $indentString = ' ', bool $indentFirstLine = true, ?int $lineLength = null, - ?Formatter $tagFormatter = null + ?Formatter $tagFormatter = null, + string $lineEnding = "\n" ) { $this->indent = $indent; $this->indentString = $indentString; $this->isFirstLineIndented = $indentFirstLine; $this->lineLength = $lineLength; $this->tagFormatter = $tagFormatter ?: new PassthroughFormatter(); + $this->lineEnding = $lineEnding; } /** @@ -96,7 +103,7 @@ class Serializer $comment = $this->addTagBlock($docblock, $wrapLength, $indent, $comment); - return $comment . $indent . ' */'; + return str_replace("\n", $this->lineEnding, $comment . $indent . ' */'); } private function removeTrailingSpaces(string $indent, string $text): string