Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

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.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

OutputFormatterStyleStack.php

Zuletzt modifiziert: 09.10.2024, 12:58 - Dateigröße: 2.72 KiB


 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  /**
 015   * @author Jean-François Simon <contact@jfsimon.fr>
 016   */
 017  class OutputFormatterStyleStack
 018  {
 019      /**
 020       * @var OutputFormatterStyleInterface[]
 021       */
 022      private $styles;
 023   
 024      /**
 025       * @var OutputFormatterStyleInterface
 026       */
 027      private $emptyStyle;
 028   
 029      /**
 030       * Constructor.
 031       *
 032       * @param OutputFormatterStyleInterface|null $emptyStyle
 033       */
 034      public function __construct(OutputFormatterStyleInterface $emptyStyle = null)
 035      {
 036          $this->emptyStyle = $emptyStyle ?: new OutputFormatterStyle();
 037          $this->reset();
 038      }
 039   
 040      /**
 041       * Resets stack (ie. empty internal arrays).
 042       */
 043      public function reset()
 044      {
 045          $this->styles = array();
 046      }
 047   
 048      /**
 049       * Pushes a style in the stack.
 050       *
 051       * @param OutputFormatterStyleInterface $style
 052       */
 053      public function push(OutputFormatterStyleInterface $style)
 054      {
 055          $this->styles[] = $style;
 056      }
 057   
 058      /**
 059       * Pops a style from the stack.
 060       *
 061       * @param OutputFormatterStyleInterface|null $style
 062       *
 063       * @return OutputFormatterStyleInterface
 064       *
 065       * @throws \InvalidArgumentException  When style tags incorrectly nested
 066       */
 067      public function pop(OutputFormatterStyleInterface $style = null)
 068      {
 069          if (empty($this->styles)) {
 070              return $this->emptyStyle;
 071          }
 072   
 073          if (null === $style) {
 074              return array_pop($this->styles);
 075          }
 076   
 077          foreach (array_reverse($this->styles, true) as $index => $stackedStyle) {
 078              if ($style->apply('') === $stackedStyle->apply('')) {
 079                  $this->styles = array_slice($this->styles, 0, $index);
 080   
 081                  return $stackedStyle;
 082              }
 083          }
 084   
 085          throw new \InvalidArgumentException('Incorrectly nested style tag found.');
 086      }
 087   
 088      /**
 089       * Computes current style with stacks top codes.
 090       *
 091       * @return OutputFormatterStyle
 092       */
 093      public function getCurrent()
 094      {
 095          if (empty($this->styles)) {
 096              return $this->emptyStyle;
 097          }
 098   
 099          return $this->styles[count($this->styles)-1];
 100      }
 101   
 102      /**
 103       * @param OutputFormatterStyleInterface $emptyStyle
 104       *
 105       * @return OutputFormatterStyleStack
 106       */
 107      public function setEmptyStyle(OutputFormatterStyleInterface $emptyStyle)
 108      {
 109          $this->emptyStyle = $emptyStyle;
 110   
 111          return $this;
 112      }
 113   
 114      /**
 115       * @return OutputFormatterStyleInterface
 116       */
 117      public function getEmptyStyle()
 118      {
 119          return $this->emptyStyle;
 120      }
 121  }
 122