Page MenuHomePhabricator

D14569.id35238.diff
No OneTemporary

D14569.id35238.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -130,6 +130,7 @@
'PhutilConsoleBlock' => 'console/view/PhutilConsoleBlock.php',
'PhutilConsoleConcatenatedView' => 'console/view/PhutilConsoleConcatenatedView.php',
'PhutilConsoleFormatter' => 'console/PhutilConsoleFormatter.php',
+ 'PhutilConsoleFormatterTestCase' => 'console/__tests__/PhutilConsoleFormatterTestCase.php',
'PhutilConsoleList' => 'console/view/PhutilConsoleList.php',
'PhutilConsoleMessage' => 'console/PhutilConsoleMessage.php',
'PhutilConsoleProgressBar' => 'console/PhutilConsoleProgressBar.php',
@@ -653,6 +654,7 @@
'PhutilConsoleBlock' => 'PhutilConsoleView',
'PhutilConsoleConcatenatedView' => 'PhutilConsoleView',
'PhutilConsoleFormatter' => 'Phobject',
+ 'PhutilConsoleFormatterTestCase' => 'PhutilTestCase',
'PhutilConsoleList' => 'PhutilConsoleView',
'PhutilConsoleMessage' => 'Phobject',
'PhutilConsoleProgressBar' => 'Phobject',
diff --git a/src/console/PhutilConsoleFormatter.php b/src/console/PhutilConsoleFormatter.php
--- a/src/console/PhutilConsoleFormatter.php
+++ b/src/console/PhutilConsoleFormatter.php
@@ -67,11 +67,13 @@
$bold_re = '/(?<![\\\\])\*\*(.*)\*\*/sU';
$underline_re = '/(?<![\\\\])__(.*)__/sU';
$invert_re = '/(?<![\\\\])##(.*)##/sU';
+ $backtick_re = '/(?<![\\\\])`(.*)`/sU';
if (self::getDisableANSI()) {
$format = preg_replace($bold_re, '\1', $format);
$format = preg_replace($underline_re, '\1', $format);
$format = preg_replace($invert_re, '\1', $format);
+ $format = preg_replace($backtick_re, '\1', $format);
$format = preg_replace(
'@<(fg|bg):('.$colors.')>(.*)</\1>@sU',
'\3',
@@ -85,6 +87,7 @@
$format = preg_replace($bold_re, $bold, $format);
$format = preg_replace($underline_re, $underline, $format);
$format = preg_replace($invert_re, $invert, $format);
+ $format = preg_replace($backtick_re, '\1', $format);
$format = preg_replace_callback(
'@<(fg|bg):('.$colors.')>(.*)</\1>@sU',
array(__CLASS__, 'replaceColorCode'),
diff --git a/src/console/__tests__/PhutilConsoleFormatterTestCase.php b/src/console/__tests__/PhutilConsoleFormatterTestCase.php
new file mode 100644
--- /dev/null
+++ b/src/console/__tests__/PhutilConsoleFormatterTestCase.php
@@ -0,0 +1,57 @@
+<?php
+
+final class PhutilConsoleFormatterTestCase extends PhutilTestCase {
+
+ public function testformatString() {
+ $esc = chr(27);
+
+ $data = array(
+ '' => array(
+ '',
+ '',
+ ),
+ '<bg:red>red background</bg>' => array(
+ 'red background',
+ "{$esc}[41mred background{$esc}[49m",
+ ),
+ '<fg:blue>blue foreground</fg>' => array(
+ 'blue foreground',
+ "{$esc}[34mblue foreground{$esc}[39m",
+ ),
+ '**bold**' => array(
+ 'bold',
+ "{$esc}[1mbold{$esc}[m",
+ ),
+ '__underline__' => array(
+ 'underline',
+ "{$esc}[4munderline{$esc}[m",
+ ),
+ '##invert##' => array(
+ 'invert',
+ "{$esc}[7minvert{$esc}[m",
+ ),
+ '`backtick`' => array(
+ 'backtick',
+ 'backtick',
+ ),
+ );
+
+ foreach ($data as $format => $expected) {
+ list($nonansi_expected, $ansi_expected) = $expected;
+
+ $is_ansi = PhutilConsoleFormatter::getDisableANSI();
+
+ PhutilConsoleFormatter::disableANSI(true);
+ $nonansi_value = PhutilConsoleFormatter::formatString($format);
+
+ PhutilConsoleFormatter::disableANSI(false);
+ $ansi_value = PhutilConsoleFormatter::formatString($format);
+
+ $this->assertEqual($nonansi_expected, $nonansi_value);
+ $this->assertEqual($ansi_expected, $ansi_value);
+ }
+
+ PhutilConsoleFormatter::disableANSI($is_ansi);
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 2, 4:22 PM (3 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7710881
Default Alt Text
D14569.id35238.diff (3 KB)

Event Timeline