Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. OutputWrapper.php

function OutputWrapper::wrap

File

vendor/symfony/console/Helper/OutputWrapper.php, line 56

Class

OutputWrapper
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).

Namespace

Symfony\Component\Console\Helper

Code

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);
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal