mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 11:28:25 +00:00
Adding Shell::wrapText() to extend String methods, with indenting which can be useful in shell output.
This commit is contained in:
parent
7b5ae6a5c4
commit
0492a188ed
2 changed files with 50 additions and 0 deletions
|
@ -447,6 +447,32 @@ class Shell extends Object {
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrap a block of text.
|
||||||
|
* Allows you to set the width, and indenting on a block of text.
|
||||||
|
*
|
||||||
|
* ### Options
|
||||||
|
*
|
||||||
|
* - `width` The width to wrap to. Defaults to 72
|
||||||
|
* - `wordWrap` Only wrap on words breaks (spaces) Defaults to true.
|
||||||
|
* - `indent` Indent the text with the string provided. Defaults to null.
|
||||||
|
*
|
||||||
|
* @param string $text Text the text to format.
|
||||||
|
* @param mixed $options Array of options to use, or an integer to wrap the text to.
|
||||||
|
* @return string Wrapped / indented text
|
||||||
|
*/
|
||||||
|
public function wrapText($text, $options = array()) {
|
||||||
|
$wrapped = String::wrap($text, $options);
|
||||||
|
if (is_array($options) && !empty($options['indent'])) {
|
||||||
|
$chunks = explode("\n", $wrapped);
|
||||||
|
foreach ($chunks as &$chunk) {
|
||||||
|
$chunk = $options['indent'] . $chunk;
|
||||||
|
}
|
||||||
|
return implode("\n", $chunks);
|
||||||
|
}
|
||||||
|
return $wrapped;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Outputs a single or multiple messages to stdout. If no parameters
|
* Outputs a single or multiple messages to stdout. If no parameters
|
||||||
* are passed outputs just a newline.
|
* are passed outputs just a newline.
|
||||||
|
|
|
@ -719,4 +719,28 @@ class ShellTest extends CakeTestCase {
|
||||||
|
|
||||||
$Shell->runCommand('run_command', array('run_command', 'one', 'value'));
|
$Shell->runCommand('run_command', array('run_command', 'one', 'value'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* test wrapBlock wrapping text.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function testWrapText() {
|
||||||
|
$text = 'This is the song that never ends. This is the song that never ends. This is the song that never ends.';
|
||||||
|
$result = $this->Shell->wrapText($text, 33);
|
||||||
|
$expected = <<<TEXT
|
||||||
|
This is the song that never ends.
|
||||||
|
This is the song that never ends.
|
||||||
|
This is the song that never ends.
|
||||||
|
TEXT;
|
||||||
|
$this->assertEquals($expected, $result, 'Text not wrapped.');
|
||||||
|
|
||||||
|
$result = $this->Shell->wrapText($text, array('indent' => ' ', 'width' => 33));
|
||||||
|
$expected = <<<TEXT
|
||||||
|
This is the song that never ends.
|
||||||
|
This is the song that never ends.
|
||||||
|
This is the song that never ends.
|
||||||
|
TEXT;
|
||||||
|
$this->assertEquals($expected, $result, 'Text not wrapped.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue