You are here

class OutputFormatterStyle in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/console/Formatter/OutputFormatterStyle.php \Symfony\Component\Console\Formatter\OutputFormatterStyle

Formatter style class for defining styles.

@author Konstantin Kudryashov <ever.zet@gmail.com>

Hierarchy

Expanded class hierarchy of OutputFormatterStyle

6 files declare their use of OutputFormatterStyle
DialogHelper.php in vendor/symfony/console/Helper/DialogHelper.php
OutputFormatterStyleStackTest.php in vendor/symfony/console/Tests/Formatter/OutputFormatterStyleStackTest.php
OutputFormatterStyleTest.php in vendor/symfony/console/Tests/Formatter/OutputFormatterStyleTest.php
OutputFormatterTest.php in vendor/symfony/console/Tests/Formatter/OutputFormatterTest.php
OutputTest.php in vendor/symfony/console/Tests/Output/OutputTest.php

... See full list

File

vendor/symfony/console/Formatter/OutputFormatterStyle.php, line 19

Namespace

Symfony\Component\Console\Formatter
View source
class OutputFormatterStyle implements OutputFormatterStyleInterface {
  private static $availableForegroundColors = array(
    'black' => array(
      'set' => 30,
      'unset' => 39,
    ),
    'red' => array(
      'set' => 31,
      'unset' => 39,
    ),
    'green' => array(
      'set' => 32,
      'unset' => 39,
    ),
    'yellow' => array(
      'set' => 33,
      'unset' => 39,
    ),
    'blue' => array(
      'set' => 34,
      'unset' => 39,
    ),
    'magenta' => array(
      'set' => 35,
      'unset' => 39,
    ),
    'cyan' => array(
      'set' => 36,
      'unset' => 39,
    ),
    'white' => array(
      'set' => 37,
      'unset' => 39,
    ),
    'default' => array(
      'set' => 39,
      'unset' => 39,
    ),
  );
  private static $availableBackgroundColors = array(
    'black' => array(
      'set' => 40,
      'unset' => 49,
    ),
    'red' => array(
      'set' => 41,
      'unset' => 49,
    ),
    'green' => array(
      'set' => 42,
      'unset' => 49,
    ),
    'yellow' => array(
      'set' => 43,
      'unset' => 49,
    ),
    'blue' => array(
      'set' => 44,
      'unset' => 49,
    ),
    'magenta' => array(
      'set' => 45,
      'unset' => 49,
    ),
    'cyan' => array(
      'set' => 46,
      'unset' => 49,
    ),
    'white' => array(
      'set' => 47,
      'unset' => 49,
    ),
    'default' => array(
      'set' => 49,
      'unset' => 49,
    ),
  );
  private static $availableOptions = array(
    'bold' => array(
      'set' => 1,
      'unset' => 22,
    ),
    'underscore' => array(
      'set' => 4,
      'unset' => 24,
    ),
    'blink' => array(
      'set' => 5,
      'unset' => 25,
    ),
    'reverse' => array(
      'set' => 7,
      'unset' => 27,
    ),
    'conceal' => array(
      'set' => 8,
      'unset' => 28,
    ),
  );
  private $foreground;
  private $background;
  private $options = array();

  /**
   * Initializes output formatter style.
   *
   * @param string|null $foreground The style foreground color name
   * @param string|null $background The style background color name
   * @param array       $options    The style options
   */
  public function __construct($foreground = null, $background = null, array $options = array()) {
    if (null !== $foreground) {
      $this
        ->setForeground($foreground);
    }
    if (null !== $background) {
      $this
        ->setBackground($background);
    }
    if (count($options)) {
      $this
        ->setOptions($options);
    }
  }

  /**
   * Sets style foreground color.
   *
   * @param string|null $color The color name
   *
   * @throws \InvalidArgumentException When the color name isn't defined
   */
  public function setForeground($color = null) {
    if (null === $color) {
      $this->foreground = null;
      return;
    }
    if (!isset(static::$availableForegroundColors[$color])) {
      throw new \InvalidArgumentException(sprintf('Invalid foreground color specified: "%s". Expected one of (%s)', $color, implode(', ', array_keys(static::$availableForegroundColors))));
    }
    $this->foreground = static::$availableForegroundColors[$color];
  }

  /**
   * Sets style background color.
   *
   * @param string|null $color The color name
   *
   * @throws \InvalidArgumentException When the color name isn't defined
   */
  public function setBackground($color = null) {
    if (null === $color) {
      $this->background = null;
      return;
    }
    if (!isset(static::$availableBackgroundColors[$color])) {
      throw new \InvalidArgumentException(sprintf('Invalid background color specified: "%s". Expected one of (%s)', $color, implode(', ', array_keys(static::$availableBackgroundColors))));
    }
    $this->background = static::$availableBackgroundColors[$color];
  }

  /**
   * Sets some specific style option.
   *
   * @param string $option The option name
   *
   * @throws \InvalidArgumentException When the option name isn't defined
   */
  public function setOption($option) {
    if (!isset(static::$availableOptions[$option])) {
      throw new \InvalidArgumentException(sprintf('Invalid option specified: "%s". Expected one of (%s)', $option, implode(', ', array_keys(static::$availableOptions))));
    }
    if (!in_array(static::$availableOptions[$option], $this->options)) {
      $this->options[] = static::$availableOptions[$option];
    }
  }

  /**
   * Unsets some specific style option.
   *
   * @param string $option The option name
   *
   * @throws \InvalidArgumentException When the option name isn't defined
   */
  public function unsetOption($option) {
    if (!isset(static::$availableOptions[$option])) {
      throw new \InvalidArgumentException(sprintf('Invalid option specified: "%s". Expected one of (%s)', $option, implode(', ', array_keys(static::$availableOptions))));
    }
    $pos = array_search(static::$availableOptions[$option], $this->options);
    if (false !== $pos) {
      unset($this->options[$pos]);
    }
  }

  /**
   * Sets multiple style options at once.
   *
   * @param array $options
   */
  public function setOptions(array $options) {
    $this->options = array();
    foreach ($options as $option) {
      $this
        ->setOption($option);
    }
  }

  /**
   * Applies the style to a given text.
   *
   * @param string $text The text to style
   *
   * @return string
   */
  public function apply($text) {
    $setCodes = array();
    $unsetCodes = array();
    if (null !== $this->foreground) {
      $setCodes[] = $this->foreground['set'];
      $unsetCodes[] = $this->foreground['unset'];
    }
    if (null !== $this->background) {
      $setCodes[] = $this->background['set'];
      $unsetCodes[] = $this->background['unset'];
    }
    if (count($this->options)) {
      foreach ($this->options as $option) {
        $setCodes[] = $option['set'];
        $unsetCodes[] = $option['unset'];
      }
    }
    if (0 === count($setCodes)) {
      return $text;
    }
    return sprintf("\33[%sm%s\33[%sm", implode(';', $setCodes), $text, implode(';', $unsetCodes));
  }

}

Members

Namesort descending Modifiers Type Description Overrides
OutputFormatterStyle::$availableBackgroundColors private static property
OutputFormatterStyle::$availableForegroundColors private static property
OutputFormatterStyle::$availableOptions private static property
OutputFormatterStyle::$background private property
OutputFormatterStyle::$foreground private property
OutputFormatterStyle::$options private property
OutputFormatterStyle::apply public function Applies the style to a given text. Overrides OutputFormatterStyleInterface::apply
OutputFormatterStyle::setBackground public function Sets style background color. Overrides OutputFormatterStyleInterface::setBackground
OutputFormatterStyle::setForeground public function Sets style foreground color. Overrides OutputFormatterStyleInterface::setForeground
OutputFormatterStyle::setOption public function Sets some specific style option. Overrides OutputFormatterStyleInterface::setOption
OutputFormatterStyle::setOptions public function Sets multiple style options at once. Overrides OutputFormatterStyleInterface::setOptions
OutputFormatterStyle::unsetOption public function Unsets some specific style option. Overrides OutputFormatterStyleInterface::unsetOption
OutputFormatterStyle::__construct public function Initializes output formatter style.