| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | <?php/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */namespace Symfony\Component\Console\Output;use Symfony\Component\Console\Exception\InvalidArgumentException;use Symfony\Component\Console\Formatter\OutputFormatterInterface;/** * A BufferedOutput that keeps only the last N chars. * * @author Jérémy Derussé <jeremy@derusse.com> */class TrimmedBufferOutput extends Output{    private $maxLength;    private $buffer = '';    public function __construct(int $maxLength, ?int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = false, ?OutputFormatterInterface $formatter = null)    {        if ($maxLength <= 0) {            throw new InvalidArgumentException(sprintf('"%s()" expects a strictly positive maxLength. Got %d.', __METHOD__, $maxLength));        }        parent::__construct($verbosity, $decorated, $formatter);        $this->maxLength = $maxLength;    }    /**     * Empties buffer and returns its content.     *     * @return string     */    public function fetch()    {        $content = $this->buffer;        $this->buffer = '';        return $content;    }    /**     * {@inheritdoc}     */    protected function doWrite(string $message, bool $newline)    {        $this->buffer .= $message;        if ($newline) {            $this->buffer .= \PHP_EOL;        }        $this->buffer = substr($this->buffer, 0 - $this->maxLength);    }}
 |