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