/** var Application */
protected $application;
+ protected $terminal;
+
/** var int */
protected $defaultWidth;
/** var int */
protected $minWidth = 0;
+ /* var boolean */
+ protected $shouldWrap = true;
+
public function __construct($defaultWidth = 0)
{
$this->defaultWidth = $defaultWidth;
$this->application = $application;
}
+ public function setTerminal($terminal)
+ {
+ $this->terminal = $terminal;
+ }
+
+ public function getTerminal()
+ {
+ if (!$this->terminal && class_exists('\Symfony\Component\Console\Terminal')) {
+ $this->terminal = new \Symfony\Component\Console\Terminal();
+ }
+ return $this->terminal;
+ }
+
+ public function enableWrap($shouldWrap)
+ {
+ $this->shouldWrap = $shouldWrap;
+ }
+
public function prepare(CommandData $commandData, FormatterOptions $options)
{
$width = $this->getTerminalWidth();
protected function getTerminalWidth()
{
- if (!$this->application) {
+ // Don't wrap if wrapping has been disabled.
+ if (!$this->shouldWrap) {
return 0;
}
+ $terminal = $this->getTerminal();
+ if ($terminal) {
+ return $terminal->getWidth();
+ }
+
+ return $this->getTerminalWidthViaApplication();
+ }
+
+ protected function getTerminalWidthViaApplication()
+ {
+ if (!$this->application) {
+ return 0;
+ }
$dimensions = $this->application->getTerminalDimensions();
if ($dimensions[0] == null) {
return 0;