Вход Регистрация
Файл: vendor/symfony/console/Formatter/OutputFormatterStyle.php
Строк: 136
<?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 SymfonyComponentConsoleFormatter;

use 
SymfonyComponentConsoleColor;

/**
 * Formatter style class for defining styles.
 *
 * @author Konstantin Kudryashov <ever.zet@gmail.com>
 */
class OutputFormatterStyle implements OutputFormatterStyleInterface
{
    private 
$color;
    private 
string $foreground;
    private 
string $background;
    private array 
$options;
    private ?
string $href null;
    private 
bool $handlesHrefGracefully;

    
/**
     * Initializes output formatter style.
     *
     * @param string|null $foreground The style foreground color name
     * @param string|null $background The style background color name
     */
    
public function __construct(string $foreground nullstring $background null, array $options = [])
    {
        
$this->color = new Color($this->foreground $foreground ?: ''$this->background $background ?: ''$this->options $options);
    }

    
/**
     * {@inheritdoc}
     */
    
public function setForeground(string $color null)
    {
        
$this->color = new Color($this->foreground $color ?: ''$this->background$this->options);
    }

    
/**
     * {@inheritdoc}
     */
    
public function setBackground(string $color null)
    {
        
$this->color = new Color($this->foreground$this->background $color ?: ''$this->options);
    }

    public function 
setHref(string $url): void
    
{
        
$this->href $url;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setOption(string $option)
    {
        
$this->options[] = $option;
        
$this->color = new Color($this->foreground$this->background$this->options);
    }

    
/**
     * {@inheritdoc}
     */
    
public function unsetOption(string $option)
    {
        
$pos array_search($option$this->options);
        if (
false !== $pos) {
            unset(
$this->options[$pos]);
        }

        
$this->color = new Color($this->foreground$this->background$this->options);
    }

    
/**
     * {@inheritdoc}
     */
    
public function setOptions(array $options)
    {
        
$this->color = new Color($this->foreground$this->background$this->options $options);
    }

    
/**
     * {@inheritdoc}
     */
    
public function apply(string $text): string
    
{
        
$this->handlesHrefGracefully ??= 'JetBrains-JediTerm' !== getenv('TERMINAL_EMULATOR')
            && (!
getenv('KONSOLE_VERSION') || (int) getenv('KONSOLE_VERSION') > 201100);

        if (
null !== $this->href && $this->handlesHrefGracefully) {
            
$text "33]8;;$this->href33\$text33]8;;33\";
        }

        return 
$this->color->apply($text);
    }
}
Онлайн: 1
Реклама