Page MenuHomePhabricator

D16926.diff
No OneTemporary

D16926.diff

diff --git a/src/console/format.php b/src/console/format.php
--- a/src/console/format.php
+++ b/src/console/format.php
@@ -82,9 +82,10 @@
*
* @param string Text to wrap.
* @param int Optional indent level.
+ * @param bool True to also indent the first line.
* @return string Wrapped text.
*/
-function phutil_console_wrap($text, $indent = 0) {
+function phutil_console_wrap($text, $indent = 0, $with_prefix = true) {
$lines = array();
$width = (78 - $indent);
@@ -163,7 +164,13 @@
}
foreach ($lines as $idx => $line) {
- $lines[$idx] = $pre.implode('', $line);
+ if ($idx == 0 && !$with_prefix) {
+ $prefix = null;
+ } else {
+ $prefix = $pre;
+ }
+
+ $lines[$idx] = $prefix.implode('', $line);
}
return implode('', $lines);
diff --git a/src/console/view/PhutilConsoleBlock.php b/src/console/view/PhutilConsoleBlock.php
--- a/src/console/view/PhutilConsoleBlock.php
+++ b/src/console/view/PhutilConsoleBlock.php
@@ -29,7 +29,10 @@
switch ($type) {
case 'paragraph':
- $item = phutil_console_wrap($item)."\n";
+ $item = array(
+ tsprintf('%s', $item)->applyWrap(),
+ "\n",
+ );
break;
case 'list':
$item = $item;
diff --git a/src/console/view/PhutilConsoleList.php b/src/console/view/PhutilConsoleList.php
--- a/src/console/view/PhutilConsoleList.php
+++ b/src/console/view/PhutilConsoleList.php
@@ -50,7 +50,8 @@
$output = array();
foreach ($this->getItems() as $item) {
if ($this->wrap) {
- $item = phutil_console_wrap($item, $indent_depth);
+ $item = tsprintf('%s', $item)
+ ->applyIndent($indent_depth, false);
}
$output[] = $indent_string.$bullet.$item;
diff --git a/src/xsprintf/PhutilTerminalString.php b/src/xsprintf/PhutilTerminalString.php
--- a/src/xsprintf/PhutilTerminalString.php
+++ b/src/xsprintf/PhutilTerminalString.php
@@ -15,6 +15,18 @@
return $this->string;
}
+ public function applyWrap() {
+ $string = (string)$this;
+ $string = phutil_console_wrap($string);
+ return new self($string);
+ }
+
+ public function applyIndent($depth, $with_prefix = true) {
+ $string = (string)$this;
+ $string = phutil_console_wrap($string, $depth, $with_prefix);
+ return new self($string);
+ }
+
public static function escapeStringValue($value, $allow_whitespace) {
if ($value instanceof PhutilTerminalString) {
return (string)$value;

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 27, 9:18 AM (2 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6709681
Default Alt Text
D16926.diff (2 KB)

Event Timeline