/** * 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 string|integer|array $options Array of options to use, or an integer to wrap the text to. * @return string Wrapped / indented text * @see String::wrap() * @link http://book.cakephp.org/2.0/en/console-and-shells.html#Shell::wrapText */ public function wrapText($text, $options = array()) { return String::wrap($text, $options); }
/** * test wrap() indenting * * @return void */ public function testWrapIndent() { $text = 'This is the song that never ends. This is the song that never ends. This is the song that never ends.'; $result = String::wrap($text, array('width' => 33, 'indent' => "\t", 'indentAt' => 1)); $expected = <<<TEXT This is the song that never ends. \tThis is the song that never ends. \tThis is the song that never ends. TEXT; $this->assertTextEquals($expected, $result); }
/** * Looks for a skeleton template of a Cake application, * and if not found asks the user for a path. When there is a path * this method will make a deep copy of the skeleton to the project directory. * * @param string $path Project path * @param string $skel Path to copy from * @param string $skip array of directories to skip when copying * @return mixed */ public function bake($path, $skel = null, $skip = array('empty')) { if (!$skel && !empty($this->params['skel'])) { $skel = $this->params['skel']; } while (!$skel) { $skel = $this->in(__d('cake_console', "What is the path to the directory layout you wish to copy?"), null, CAKE . 'Console' . DS . 'Templates' . DS . 'skel'); if (!$skel) { $this->err(__d('cake_console', 'The directory path you supplied was empty. Please try again.')); } else { while (is_dir($skel) === false) { $skel = $this->in(__d('cake_console', 'Directory path does not exist please choose another:'), null, CAKE . 'Console' . DS . 'Templates' . DS . 'skel'); } } } $app = basename($path); $this->out(__d('cake_console', '<info>Skel Directory</info>: ') . $skel); $this->out(__d('cake_console', '<info>Will be copied to</info>: ') . $path); $this->hr(); $looksGood = $this->in(__d('cake_console', 'Look okay?'), array('y', 'n', 'q'), 'y'); switch (strtolower($looksGood)) { case 'y': $Folder = new Folder($skel); if (!empty($this->params['empty'])) { $skip = array(); } if ($Folder->copy(array('to' => $path, 'skip' => $skip))) { $this->hr(); $this->out(__d('cake_console', '<success>Created:</success> %s in %s', $app, $path)); $this->hr(); } else { $this->err(__d('cake_console', "<error>Could not create</error> '%s' properly.", $app)); return false; } foreach ($Folder->messages() as $message) { $this->out(String::wrap(' * ' . $message), 1, Shell::VERBOSE); } return true; case 'n': unset($this->args[0]); $this->execute(); return false; case 'q': $this->out(__d('cake_console', '<error>Bake Aborted.</error>')); return false; } }
/** * Get the help as formatted text suitable for output on the command line. * * @param integer $width * The width of the help output. * @return string */ public function text($width = 72) { $parser = $this->_parser; $out = array(); $description = $parser->description(); if (!empty($description)) { $out[] = String::wrap($description, $width); $out[] = ''; } $out[] = __d('cake_console', '<info>Usage:</info>'); $out[] = $this->_generateUsage(); $out[] = ''; $subcommands = $parser->subcommands(); if (!empty($subcommands)) { $out[] = __d('cake_console', '<info>Subcommands:</info>'); $out[] = ''; $max = $this->_getMaxLength($subcommands) + 2; foreach ($subcommands as $command) { $out[] = String::wrap($command->help($max), array('width' => $width, 'indent' => str_repeat(' ', $max), 'indentAt' => 1)); } $out[] = ''; $out[] = __d('cake_console', 'To see help on a subcommand use <info>`cake %s [subcommand] --help`</info>', $parser->command()); $out[] = ''; } $options = $parser->options(); if (!empty($options)) { $max = $this->_getMaxLength($options) + 8; $out[] = __d('cake_console', '<info>Options:</info>'); $out[] = ''; foreach ($options as $option) { $out[] = String::wrap($option->help($max), array('width' => $width, 'indent' => str_repeat(' ', $max), 'indentAt' => 1)); } $out[] = ''; } $arguments = $parser->arguments(); if (!empty($arguments)) { $max = $this->_getMaxLength($arguments) + 2; $out[] = __d('cake_console', '<info>Arguments:</info>'); $out[] = ''; foreach ($arguments as $argument) { $out[] = String::wrap($argument->help($max), array('width' => $width, 'indent' => str_repeat(' ', $max), 'indentAt' => 1)); } $out[] = ''; } $epilog = $parser->epilog(); if (!empty($epilog)) { $out[] = String::wrap($epilog, $width); $out[] = ''; } return implode("\n", $out); }
<h4> <?php echo $HTML->link($Comment->BlogPost->detailPageUri() . '#Comments', $Comment->BlogPost->get('headline')); ?> </h4> <?php } ?> <h3> <?php echo $this->element('gravatar', array('email' => $Comment->get('email'), 'size' => $avatarSize)); echo date(__('d.m.Y H:i'), $Comment->created) . '<br />'; if ($Comment->url) { echo $HTML->link('http://' . $Comment->url, $Comment->get('name'), array('rel' => 'external')); } else { echo $Comment->get('name'); } ?> </h3><br /> <?php $text = $Comment->text; $text = Sanitizer::html($text); $text = nl2br($text); $text = Text::autoURLs($text); $text = String::wrap($text, 55, true); if (isset($truncated)) { $text = String::truncate($text, $truncated !== true ? $truncated : 120, '…'); } echo Sanitizer::html($text); ?> </li>
/** * Looks for a skeleton template of a Cake application, * and if not found asks the user for a path. When there is a path * this method will make a deep copy of the skeleton to the project directory. * * @param string $path Project path * @param string $skel Path to copy from * @param string $skip array of directories to skip when copying * @return boolean */ protected function _bake($path, $skel, $skip = array()) { $Folder = new Folder($skel); $app = basename($path); if (!$Folder->copy(array('to' => $path, 'skip' => $skip))) { $this->err(__d('cake_console', "<error>Could not create</error> '%s' properly.", $app)); return false; } foreach ($Folder->messages() as $message) { $this->out(String::wrap(' * ' . $message), 1, Shell::VERBOSE); } return true; }
/** * Looks for a skeleton template of a Cake application, * and if not found asks the user for a path. When there is a path * this method will make a deep copy of the skeleton to the project directory. * A default home page will be added, and the tmp file storage will be chmod'ed to 0777. * * @param string $path Project path * @param string $skel Path to copy from * @param string $skip array of directories to skip when copying * @access private */ function bake($path, $skel = null, $skip = array('empty')) { if (!$skel) { $skel = $this->params['skel']; } while (!$skel) { $skel = $this->in(__("What is the path to the directory layout you wish to copy?\nExample: %s", APP, null, ROOT . DS . 'myapp' . DS)); if ($skel == '') { $this->err(__('The directory path you supplied was empty. Please try again.')); } else { while (is_dir($skel) === false) { $skel = $this->in(__('Directory path does not exist please choose another:')); } } } $app = basename($path); $this->out(__('<info>Skel Directory</info>: ') . $skel); $this->out(__('<info>Will be copied to</info>: ') . $path); $this->hr(); $looksGood = $this->in(__('Look okay?'), array('y', 'n', 'q'), 'y'); if (strtolower($looksGood) == 'y') { $Folder = new Folder($skel); if (!empty($this->params['empty'])) { $skip = array(); } if ($Folder->copy(array('to' => $path, 'skip' => $skip))) { $this->hr(); $this->out(__('<success>Created:</success> %s in %s', $app, $path)); $this->hr(); } else { $this->err(__("<error>Could not create</error> '%s' properly.", $app)); return false; } foreach ($Folder->messages() as $message) { $this->out(String::wrap(' * ' . $message), 1, Shell::VERBOSE); } return true; } elseif (strtolower($looksGood) == 'q') { $this->out(__('Bake Aborted.')); } else { $this->execute(false); return false; } }
/** * test wrap() indenting * * @return void */ function testWrapIndent() { $text = 'This is the song that never ends. This is the song that never ends. This is the song that never ends.'; $result = String::wrap($text, array('width' => 33, 'indent' => "\t", 'indentAt' => 1)); $expected = <<<TEXT This is the song that never ends. \tThis is the song that never ends. \tThis is the song that never ends. TEXT; }