Вход Регистрация
Файл: vendor/symfony/console/Formatter/OutputFormatterStyle.php
Строк: 128
<?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 $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 = null, ?string $background = null, array $options = [])
    {
        
$this->color = new Color($this->foreground = $foreground ?: '', $this->background = $background ?: '', $this->options = $options);
    }

    public function 
setForeground(?string $color): void
    
{
        
$this->color = new Color($this->foreground = $color ?: '', $this->background, $this->options);
    }

    public function 
setBackground(?string $color): void
    
{
        
$this->color = new Color($this->foreground, $this->background = $color ?: '', $this->options);
    }

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

    public function 
setOption(string $option): void
    
{
        
$this->options[] = $option;
        
$this->color = new Color($this->foreground, $this->background, $this->options);
    }

    public function 
unsetOption(string $option): void
    
{
        
$pos = array_search($option, $this->options);
        if (
false !== $pos) {
            unset(
$this->options[$pos]);
        }

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

    public function 
setOptions(array $options): void
    
{
        
$this->color = new Color($this->foreground, $this->background, $this->options = $options);
    }

    public function 
apply(string $text): string
    
{
        
$this->handlesHrefGracefully ??= 'JetBrains-JediTerm' !== getenv('TERMINAL_EMULATOR')
            && (!
getenv('KONSOLE_VERSION') || (int) getenv('KONSOLE_VERSION') > 201100)
            && !isset(
$_SERVER['IDEA_INITIAL_DIRECTORY']);

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

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