Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
OutputFormatterStyleStack.php
001 <?php
002
003 /*
004 * This file is part of the Symfony package.
005 *
006 * (c) Fabien Potencier <fabien@symfony.com>
007 *
008 * For the full copyright and license information, please view the LICENSE
009 * file that was distributed with this source code.
010 */
011
012 namespace Symfony\Component\Console\Formatter;
013
014 use Symfony\Component\Console\Exception\InvalidArgumentException;
015
016 /**
017 * @author Jean-François Simon <contact@jfsimon.fr>
018 */
019 class OutputFormatterStyleStack
020 {
021 /**
022 * @var OutputFormatterStyleInterface[]
023 */
024 private $styles;
025
026 /**
027 * @var OutputFormatterStyleInterface
028 */
029 private $emptyStyle;
030
031 /**
032 * Constructor.
033 *
034 * @param OutputFormatterStyleInterface|null $emptyStyle
035 */
036 public function __construct(OutputFormatterStyleInterface $emptyStyle = null)
037 {
038 $this->emptyStyle = $emptyStyle ?: new OutputFormatterStyle();
039 $this->reset();
040 }
041
042 /**
043 * Resets stack (ie. empty internal arrays).
044 */
045 public function reset()
046 {
047 $this->styles = array();
048 }
049
050 /**
051 * Pushes a style in the stack.
052 *
053 * @param OutputFormatterStyleInterface $style
054 */
055 public function push(OutputFormatterStyleInterface $style)
056 {
057 $this->styles[] = $style;
058 }
059
060 /**
061 * Pops a style from the stack.
062 *
063 * @param OutputFormatterStyleInterface|null $style
064 *
065 * @return OutputFormatterStyleInterface
066 *
067 * @throws InvalidArgumentException When style tags incorrectly nested
068 */
069 public function pop(OutputFormatterStyleInterface $style = null)
070 {
071 if (empty($this->styles)) {
072 return $this->emptyStyle;
073 }
074
075 if (null === $style) {
076 return array_pop($this->styles);
077 }
078
079 foreach (array_reverse($this->styles, true) as $index => $stackedStyle) {
080 if ($style->apply('') === $stackedStyle->apply('')) {
081 $this->styles = array_slice($this->styles, 0, $index);
082
083 return $stackedStyle;
084 }
085 }
086
087 throw new InvalidArgumentException('Incorrectly nested style tag found.');
088 }
089
090 /**
091 * Computes current style with stacks top codes.
092 *
093 * @return OutputFormatterStyle
094 */
095 public function getCurrent()
096 {
097 if (empty($this->styles)) {
098 return $this->emptyStyle;
099 }
100
101 return $this->styles[count($this->styles) - 1];
102 }
103
104 /**
105 * @param OutputFormatterStyleInterface $emptyStyle
106 *
107 * @return OutputFormatterStyleStack
108 */
109 public function setEmptyStyle(OutputFormatterStyleInterface $emptyStyle)
110 {
111 $this->emptyStyle = $emptyStyle;
112
113 return $this;
114 }
115
116 /**
117 * @return OutputFormatterStyleInterface
118 */
119 public function getEmptyStyle()
120 {
121 return $this->emptyStyle;
122 }
123 }
124