mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* are passed outputs just a newline.
|
||||
|
|
|
@ -719,4 +719,28 @@ class ShellTest extends CakeTestCase {
|
|||
|
||||
$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