示例#1
0
    /**
     * test wrapBlock() indenting with multibyte caracters
     *
     * @return void
     */
    public function testWrapBlockIndentWithMultibyte()
    {
        $text = 'This is the song that never ends. 这是永远不会结束的歌曲。 This is the song that never ends.';
        $result = Text::wrapBlock($text, ['width' => 33, 'indent' => " → ", 'indentAt' => 1]);
        $expected = <<<TEXT
This is the song that never ends.
 → 这是永远不会结束的歌曲。 This is the song
 → that never ends.
TEXT;
        $this->assertTextEquals($expected, $result);
    }
示例#2
0
 /**
  * Get the help as formatted text suitable for output on the command line.
  *
  * @param int $width The width of the help output.
  * @return string
  */
 public function text($width = 72)
 {
     $parser = $this->_parser;
     $out = [];
     $description = $parser->description();
     if (!empty($description)) {
         $out[] = Text::wrap($description, $width);
         $out[] = '';
     }
     $out[] = '<info>Usage:</info>';
     $out[] = $this->_generateUsage();
     $out[] = '';
     $subcommands = $parser->subcommands();
     if (!empty($subcommands)) {
         $out[] = '<info>Subcommands:</info>';
         $out[] = '';
         $max = $this->_getMaxLength($subcommands) + 2;
         foreach ($subcommands as $command) {
             $out[] = Text::wrapBlock($command->help($max), ['width' => $width, 'indent' => str_repeat(' ', $max), 'indentAt' => 1]);
         }
         $out[] = '';
         $out[] = sprintf('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[] = '<info>Options:</info>';
         $out[] = '';
         foreach ($options as $option) {
             $out[] = Text::wrapBlock($option->help($max), ['width' => $width, 'indent' => str_repeat(' ', $max), 'indentAt' => 1]);
         }
         $out[] = '';
     }
     $arguments = $parser->arguments();
     if (!empty($arguments)) {
         $max = $this->_getMaxLength($arguments) + 2;
         $out[] = '<info>Arguments:</info>';
         $out[] = '';
         foreach ($arguments as $argument) {
             $out[] = Text::wrapBlock($argument->help($max), ['width' => $width, 'indent' => str_repeat(' ', $max), 'indentAt' => 1]);
         }
         $out[] = '';
     }
     $epilog = $parser->epilog();
     if (!empty($epilog)) {
         $out[] = Text::wrap($epilog, $width);
         $out[] = '';
     }
     return implode("\n", $out);
 }