radarrplexorganizrnginxsonarrdashboardembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdall
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							110 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							110 lines
						
					
					
						
							2.5 KiB
						
					
					
				| <?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 Symfony\Component\Console\Formatter; | |
| 
 | |
| use Symfony\Component\Console\Exception\InvalidArgumentException; | |
| use Symfony\Contracts\Service\ResetInterface; | |
| 
 | |
| /** | |
|  * @author Jean-François Simon <contact@jfsimon.fr> | |
|  */ | |
| class OutputFormatterStyleStack implements ResetInterface | |
| { | |
|     /** | |
|      * @var OutputFormatterStyleInterface[] | |
|      */ | |
|     private $styles; | |
| 
 | |
|     private $emptyStyle; | |
| 
 | |
|     public function __construct(OutputFormatterStyleInterface $emptyStyle = null) | |
|     { | |
|         $this->emptyStyle = $emptyStyle ?: new OutputFormatterStyle(); | |
|         $this->reset(); | |
|     } | |
| 
 | |
|     /** | |
|      * Resets stack (ie. empty internal arrays). | |
|      */ | |
|     public function reset() | |
|     { | |
|         $this->styles = []; | |
|     } | |
| 
 | |
|     /** | |
|      * Pushes a style in the stack. | |
|      */ | |
|     public function push(OutputFormatterStyleInterface $style) | |
|     { | |
|         $this->styles[] = $style; | |
|     } | |
| 
 | |
|     /** | |
|      * Pops a style from the stack. | |
|      * | |
|      * @return OutputFormatterStyleInterface | |
|      * | |
|      * @throws InvalidArgumentException When style tags incorrectly nested | |
|      */ | |
|     public function pop(OutputFormatterStyleInterface $style = null) | |
|     { | |
|         if (empty($this->styles)) { | |
|             return $this->emptyStyle; | |
|         } | |
| 
 | |
|         if (null === $style) { | |
|             return array_pop($this->styles); | |
|         } | |
| 
 | |
|         foreach (array_reverse($this->styles, true) as $index => $stackedStyle) { | |
|             if ($style->apply('') === $stackedStyle->apply('')) { | |
|                 $this->styles = \array_slice($this->styles, 0, $index); | |
| 
 | |
|                 return $stackedStyle; | |
|             } | |
|         } | |
| 
 | |
|         throw new InvalidArgumentException('Incorrectly nested style tag found.'); | |
|     } | |
| 
 | |
|     /** | |
|      * Computes current style with stacks top codes. | |
|      * | |
|      * @return OutputFormatterStyle | |
|      */ | |
|     public function getCurrent() | |
|     { | |
|         if (empty($this->styles)) { | |
|             return $this->emptyStyle; | |
|         } | |
| 
 | |
|         return $this->styles[\count($this->styles) - 1]; | |
|     } | |
| 
 | |
|     /** | |
|      * @return $this | |
|      */ | |
|     public function setEmptyStyle(OutputFormatterStyleInterface $emptyStyle) | |
|     { | |
|         $this->emptyStyle = $emptyStyle; | |
| 
 | |
|         return $this; | |
|     } | |
| 
 | |
|     /** | |
|      * @return OutputFormatterStyleInterface | |
|      */ | |
|     public function getEmptyStyle() | |
|     { | |
|         return $this->emptyStyle; | |
|     } | |
| }
 | |
| 
 |