2015-08-17 17:00:26 -07:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Component\Console\Helper ;
use Symfony\Component\Console\Formatter\OutputFormatter ;
/**
* The Formatter class provides helpers to format messages .
*
* @ author Fabien Potencier < fabien @ symfony . com >
*/
class FormatterHelper extends Helper
{
/**
* Formats a message within a section .
*
* @ param string $section The section name
* @ param string $message The message
* @ param string $style The style to apply to the section
*
* @ return string The format section
*/
public function formatSection ( $section , $message , $style = 'info' )
{
return sprintf ( '<%s>[%s]</%s> %s' , $style , $section , $style , $message );
}
/**
* Formats a message as a block of text .
*
* @ param string | array $messages The message to write in the block
* @ param string $style The style to apply to the whole block
* @ param bool $large Whether to return a large block
*
* @ return string The formatter message
*/
public function formatBlock ( $messages , $style , $large = false )
{
2018-11-23 12:29:20 +00:00
if ( ! \is_array ( $messages )) {
2015-08-17 17:00:26 -07:00
$messages = array ( $messages );
}
$len = 0 ;
$lines = array ();
foreach ( $messages as $message ) {
$message = OutputFormatter :: escape ( $message );
$lines [] = sprintf ( $large ? ' %s ' : ' %s ' , $message );
$len = max ( $this -> strlen ( $message ) + ( $large ? 4 : 2 ), $len );
}
$messages = $large ? array ( str_repeat ( ' ' , $len )) : array ();
for ( $i = 0 ; isset ( $lines [ $i ]); ++ $i ) {
$messages [] = $lines [ $i ] . str_repeat ( ' ' , $len - $this -> strlen ( $lines [ $i ]));
}
if ( $large ) {
$messages [] = str_repeat ( ' ' , $len );
}
for ( $i = 0 ; isset ( $messages [ $i ]); ++ $i ) {
$messages [ $i ] = sprintf ( '<%s>%s</%s>' , $style , $messages [ $i ], $style );
}
return implode ( " \n " , $messages );
}
2018-11-23 12:29:20 +00:00
/**
* Truncates a message to the given length .
*
* @ param string $message
* @ param int $length
* @ param string $suffix
*
* @ return string
*/
public function truncate ( $message , $length , $suffix = '...' )
{
$computedLength = $length - $this -> strlen ( $suffix );
if ( $computedLength > $this -> strlen ( $message )) {
return $message ;
}
if ( false === $encoding = mb_detect_encoding ( $message , null , true )) {
return substr ( $message , 0 , $length ) . $suffix ;
}
return mb_substr ( $message , 0 , $length , $encoding ) . $suffix ;
}
2015-08-17 17:00:26 -07:00
/**
* { @ inheritdoc }
*/
public function getName ()
{
return 'formatter' ;
}
}