PHP 8.2.31
Preview: OutputWrapper.php Size: 3.08 KB
/opt/cpanel/ea-wappspector/vendor/rector/rector/vendor/symfony/console/Helper/OutputWrapper.php

<?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 RectorPrefix202411\Symfony\Component\Console\Helper;

/**
 * Simple output wrapper for "tagged outputs" instead of wordwrap(). This solution is based on a StackOverflow
 * answer: https://stackoverflow.com/a/20434776/1476819 from user557597 (alias SLN).
 *
 *  (?:
 *       # -- Words/Characters
 *       (                       # (1 start)
 *            (?>                     # Atomic Group - Match words with valid breaks
 *                 .{1,16}                 #  1-N characters
 *                                         #  Followed by one of 4 prioritized, non-linebreak whitespace
 *                 (?:                     #  break types:
 *                      (?<= [^\S\r\n] )        # 1. - Behind a non-linebreak whitespace
 *                      [^\S\r\n]?              #      ( optionally accept an extra non-linebreak whitespace )
 *                   |  (?= \r? \n )            # 2. - Ahead a linebreak
 *                   |  $                       # 3. - EOS
 *                   |  [^\S\r\n]               # 4. - Accept an extra non-linebreak whitespace
 *                 )
 *            )                       # End atomic group
 *         |
 *            .{1,16}                 # No valid word breaks, just break on the N'th character
 *       )                       # (1 end)
 *       (?: \r? \n )?           # Optional linebreak after Words/Characters
 *    |
 *       # -- Or, Linebreak
 *       (?: \r? \n | $ )        # Stand alone linebreak or at EOS
 *  )
 *
 * @author Krisztián Ferenczi <ferenczi.krisztian@gmail.com>
 *
 * @see https://stackoverflow.com/a/20434776/1476819
 */
final class OutputWrapper
{
    /**
     * @var bool
     */
    private $allowCutUrls = \false;
    private const TAG_OPEN_REGEX_SEGMENT = '[a-z](?:[^\\\\<>]*+ | \\\\.)*';
    private const TAG_CLOSE_REGEX_SEGMENT = '[a-z][^<>]*+';
    private const URL_PATTERN = 'https?://\\S+';
    public function __construct(bool $allowCutUrls = \false)
    {
        $this->allowCutUrls = $allowCutUrls;
    }
    public function wrap(string $text, int $width, string $break = "\n") : string
    {
        if (!$width) {
            return $text;
        }
        $tagPattern = \sprintf('<(?:(?:%s)|/(?:%s)?)>', self::TAG_OPEN_REGEX_SEGMENT, self::TAG_CLOSE_REGEX_SEGMENT);
        $limitPattern = "{1,{$width}}";
        $patternBlocks = [$tagPattern];
        if (!$this->allowCutUrls) {
            $patternBlocks[] = self::URL_PATTERN;
        }
        $patternBlocks[] = '.';
        $blocks = \implode('|', $patternBlocks);
        $rowPattern = "(?:{$blocks}){$limitPattern}";
        $pattern = \sprintf('#(?:((?>(%1$s)((?<=[^\\S\\r\\n])[^\\S\\r\\n]?|(?=\\r?\\n)|$|[^\\S\\r\\n]))|(%1$s))(?:\\r?\\n)?|(?:\\r?\\n|$))#imux', $rowPattern);
        $output = \rtrim(\preg_replace($pattern, '\\1' . $break, $text), $break);
        return \str_replace(' ' . $break, $break, $output);
    }
}

Directory Contents

Dirs: 0 × Files: 20

Name Size Perms Modified Actions
3.32 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
2.62 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
2.39 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
2.25 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
4.77 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
858 B lrw-r--r-- 2024-11-08 13:59:10
Edit Download
1.85 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
800 B lrw-r--r-- 2024-11-08 13:59:10
Edit Download
3.08 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
4.70 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
20.27 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
7.24 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
19.48 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
3.32 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
31.72 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
1.78 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
2.11 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download
635 B lrw-r--r-- 2024-11-08 13:59:10
Edit Download
549 B lrw-r--r-- 2024-11-08 13:59:10
Edit Download
12.85 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).