Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit dc02ab3

Browse filesBrowse files
Nyholmfabpot
authored andcommitted
[Console] Add Helper::strwidth() and Helper::strlength()
1 parent b5d1cbc commit dc02ab3
Copy full SHA for dc02ab3

File tree

3 files changed

+35
-9
lines changed
Filter options

3 files changed

+35
-9
lines changed

‎src/Symfony/Component/Console/Helper/Helper.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Console/Helper/Helper.php
+33-7Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,17 @@ public function getHelperSet()
4545
* @return int The length of the string
4646
*/
4747
public static function strlen(?string $string)
48+
{
49+
return self::width($string);
50+
}
51+
52+
/**
53+
* Returns the width of a string, using mb_strwidth if it is available.
54+
* The width is how many characters positions the string will use.
55+
*
56+
* @internal in Symfony 5.2
57+
*/
58+
public static function width(?string $string): int
4859
{
4960
$string ?? $string = '';
5061

@@ -59,6 +70,27 @@ public static function strlen(?string $string)
5970
return mb_strwidth($string, $encoding);
6071
}
6172

73+
/**
74+
* Returns the length of a string, using mb_strlen if it is available.
75+
* The length is related to how many bytes the string will use.
76+
*
77+
* @internal in Symfony 5.2
78+
*/
79+
public static function length(?string $string): int
80+
{
81+
$string ?? $string = '';
82+
83+
if (preg_match('//u', $string)) {
84+
return (new UnicodeString($string))->length();
85+
}
86+
87+
if (false === $encoding = mb_detect_encoding($string, null, true)) {
88+
return \strlen($string);
89+
}
90+
91+
return mb_strlen($string, $encoding);
92+
}
93+
6294
/**
6395
* Returns the subset of a string, using mb_substr if it is available.
6496
*
@@ -123,13 +155,7 @@ public static function formatMemory(int $memory)
123155

124156
public static function strlenWithoutDecoration(OutputFormatterInterface $formatter, ?string $string)
125157
{
126-
$string = self::removeDecoration($formatter, $string);
127-
128-
if (preg_match('//u', $string)) {
129-
return (new UnicodeString($string))->width(true);
130-
}
131-
132-
return self::strlen($string);
158+
return self::width(self::removeDecoration($formatter, $string));
133159
}
134160

135161
public static function removeDecoration(OutputFormatterInterface $formatter, ?string $string)

‎src/Symfony/Component/Console/Helper/ProgressBar.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Console/Helper/ProgressBar.php
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ private static function initPlaceholderFormatters(): array
513513
$completeBars = $bar->getBarOffset();
514514
$display = str_repeat($bar->getBarCharacter(), $completeBars);
515515
if ($completeBars < $bar->getBarWidth()) {
516-
$emptyBars = $bar->getBarWidth() - $completeBars - Helper::strlenWithoutDecoration($output->getFormatter(), $bar->getProgressCharacter());
516+
$emptyBars = $bar->getBarWidth() - $completeBars - Helper::length(Helper::removeDecoration($output->getFormatter(), $bar->getProgressCharacter()));
517517
$display .= $bar->getProgressCharacter().str_repeat($bar->getEmptyBarCharacter(), $emptyBars);
518518
}
519519

‎src/Symfony/Component/Console/Helper/Table.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Console/Helper/Table.php
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ private function renderCell(array $row, int $column, string $cellFormat): string
511511
return sprintf($style->getBorderFormat(), str_repeat($style->getBorderChars()[2], $width));
512512
}
513513

514-
$width += Helper::strlen($cell) - Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell);
514+
$width += Helper::length($cell) - Helper::length(Helper::removeDecoration($this->output->getFormatter(), $cell));
515515
$content = sprintf($style->getCellRowContentFormat(), $cell);
516516

517517
$padType = $style->getPadType();

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.