Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
/*
4
 * This file is part of the Symfony package.
5
 *
6
 * (c) Fabien Potencier <fabien@symfony.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
 
12
namespace Symfony\Component\Console\Output;
13
 
14
use Symfony\Component\Console\Exception\InvalidArgumentException;
15
use Symfony\Component\Console\Formatter\OutputFormatterInterface;
16
 
17
/**
18
 * A BufferedOutput that keeps only the last N chars.
19
 *
20
 * @author Jérémy Derussé <jeremy@derusse.com>
21
 */
22
class TrimmedBufferOutput extends Output
23
{
24
    private int $maxLength;
25
    private string $buffer = '';
26
 
27
    public function __construct(int $maxLength, ?int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = false, OutputFormatterInterface $formatter = null)
28
    {
29
        if ($maxLength <= 0) {
30
            throw new InvalidArgumentException(sprintf('"%s()" expects a strictly positive maxLength. Got %d.', __METHOD__, $maxLength));
31
        }
32
 
33
        parent::__construct($verbosity, $decorated, $formatter);
34
        $this->maxLength = $maxLength;
35
    }
36
 
37
    /**
38
     * Empties buffer and returns its content.
39
     */
40
    public function fetch(): string
41
    {
42
        $content = $this->buffer;
43
        $this->buffer = '';
44
 
45
        return $content;
46
    }
47
 
48
    protected function doWrite(string $message, bool $newline)
49
    {
50
        $this->buffer .= $message;
51
 
52
        if ($newline) {
53
            $this->buffer .= \PHP_EOL;
54
        }
55
 
56
        $this->buffer = substr($this->buffer, 0 - $this->maxLength);
57
    }
58
}