You are here

class Console in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/sebastian/environment/src/Console.php \SebastianBergmann\Environment\Console

Hierarchy

  • class \SebastianBergmann\Environment\Console

Expanded class hierarchy of Console

1 file declares its use of Console
ResultPrinter.php in vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php

File

vendor/sebastian/environment/src/Console.php, line 15

Namespace

SebastianBergmann\Environment
View source
class Console {
  const STDIN = 0;
  const STDOUT = 1;
  const STDERR = 2;

  /**
   * Returns true if STDOUT supports colorization.
   *
   * This code has been copied and adapted from
   * Symfony\Component\Console\Output\OutputStream.
   *
   * @return bool
   */
  public function hasColorSupport() {
    if (DIRECTORY_SEPARATOR == '\\') {
      return false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI');
    }
    if (!defined('STDOUT')) {
      return false;
    }
    return $this
      ->isInteractive(STDOUT);
  }

  /**
   * Returns the number of columns of the terminal.
   *
   * @return int
   */
  public function getNumberOfColumns() {

    // Windows terminals have a fixed size of 80
    // but one column is used for the cursor.
    if (DIRECTORY_SEPARATOR == '\\') {
      return 79;
    }
    if (!$this
      ->isInteractive(self::STDIN)) {
      return 80;
    }
    if (preg_match('#\\d+ (\\d+)#', shell_exec('stty size'), $match) === 1) {
      return (int) $match[1];
    }
    if (preg_match('#columns = (\\d+);#', shell_exec('stty'), $match) === 1) {
      return (int) $match[1];
    }
    return 80;
  }

  /**
   * Returns if the file descriptor is an interactive terminal or not.
   *
   * @param int|resource $fileDescriptor
   *
   * @return bool
   */
  public function isInteractive($fileDescriptor = self::STDOUT) {
    return function_exists('posix_isatty') && @posix_isatty($fileDescriptor);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Console::getNumberOfColumns public function Returns the number of columns of the terminal.
Console::hasColorSupport public function Returns true if STDOUT supports colorization.
Console::isInteractive public function Returns if the file descriptor is an interactive terminal or not.
Console::STDERR constant
Console::STDIN constant
Console::STDOUT constant