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

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

Tag.php

Zuletzt modifiziert: 09.10.2024, 12:57 - Dateigröße: 4.01 KiB


 001  <?php
 002   
 003  /*
 004  * @package   s9e\TextFormatter
 005  * @copyright Copyright (c) 2010-2016 The s9e Authors
 006  * @license   http://www.opensource.org/licenses/mit-license.php The MIT License
 007  */
 008  namespace s9e\TextFormatter\Parser;
 009  class Tag
 010  {
 011      const START_TAG = 1;
 012      const END_TAG = 2;
 013      const SELF_CLOSING_TAG = 3;
 014      protected $attributes = array();
 015      protected $cascade = array();
 016      protected $endTag = \null;
 017      protected $flags = 0;
 018      protected $invalid = \false;
 019      protected $len;
 020      protected $name;
 021      protected $pos;
 022      protected $sortPriority;
 023      protected $startTag = \null;
 024      protected $type;
 025      public function __construct($type, $name, $pos, $len, $priority = 0)
 026      {
 027          $this->type = (int) $type;
 028          $this->name = $name;
 029          $this->pos  = (int) $pos;
 030          $this->len  = (int) $len;
 031          $this->sortPriority = (int) $priority;
 032      }
 033      public function addFlags($flags)
 034      {
 035          $this->flags |= $flags;
 036      }
 037      public function cascadeInvalidationTo(Tag $tag)
 038      {
 039          $this->cascade[] = $tag;
 040          if ($this->invalid)
 041              $tag->invalidate();
 042      }
 043      public function invalidate()
 044      {
 045          if ($this->invalid)
 046              return;
 047          $this->invalid = \true;
 048          foreach ($this->cascade as $tag)
 049              $tag->invalidate();
 050      }
 051      public function pairWith(Tag $tag)
 052      {
 053          if ($this->name === $tag->name)
 054              if ($this->type === self::START_TAG
 055               && $tag->type  === self::END_TAG
 056               && $tag->pos   >=  $this->pos)
 057              {
 058                  $this->endTag  = $tag;
 059                  $tag->startTag = $this;
 060                  $this->cascadeInvalidationTo($tag);
 061              }
 062              elseif ($this->type === self::END_TAG
 063                   && $tag->type  === self::START_TAG
 064                   && $tag->pos   <=  $this->pos)
 065              {
 066                  $this->startTag = $tag;
 067                  $tag->endTag    = $this;
 068              }
 069      }
 070      public function removeFlags($flags)
 071      {
 072          $this->flags &= ~$flags;
 073      }
 074      public function setFlags($flags)
 075      {
 076          $this->flags = $flags;
 077      }
 078      public function setSortPriority($sortPriority)
 079      {
 080          $this->sortPriority = $sortPriority;
 081          \trigger_error('setSortPriority() is deprecated. Set the priority when calling adding the tag instead. See http://s9etextformatter.readthedocs.io/Internals/API_changes/#070', \E_USER_DEPRECATED);
 082      }
 083      public function getAttributes()
 084      {
 085          return $this->attributes;
 086      }
 087      public function getEndTag()
 088      {
 089          return $this->endTag;
 090      }
 091      public function getFlags()
 092      {
 093          return $this->flags;
 094      }
 095      public function getLen()
 096      {
 097          return $this->len;
 098      }
 099      public function getName()
 100      {
 101          return $this->name;
 102      }
 103      public function getPos()
 104      {
 105          return $this->pos;
 106      }
 107      public function getSortPriority()
 108      {
 109          return $this->sortPriority;
 110      }
 111      public function getStartTag()
 112      {
 113          return $this->startTag;
 114      }
 115      public function getType()
 116      {
 117          return $this->type;
 118      }
 119      public function canClose(Tag $startTag)
 120      {
 121          if ($this->invalid
 122           || $this->name !== $startTag->name
 123           || $startTag->type !== self::START_TAG
 124           || $this->type !== self::END_TAG
 125           || $this->pos < $startTag->pos
 126           || ($this->startTag && $this->startTag !== $startTag)
 127           || ($startTag->endTag && $startTag->endTag !== $this))
 128              return \false;
 129          return \true;
 130      }
 131      public function isBrTag()
 132      {
 133          return ($this->name === 'br');
 134      }
 135      public function isEndTag()
 136      {
 137          return (bool) ($this->type & self::END_TAG);
 138      }
 139      public function isIgnoreTag()
 140      {
 141          return ($this->name === 'i');
 142      }
 143      public function isInvalid()
 144      {
 145          return $this->invalid;
 146      }
 147      public function isParagraphBreak()
 148      {
 149          return ($this->name === 'pb');
 150      }
 151      public function isSelfClosingTag()
 152      {
 153          return ($this->type === self::SELF_CLOSING_TAG);
 154      }
 155      public function isSystemTag()
 156      {
 157          return (\strpos('br i pb v', $this->name) !== \false);
 158      }
 159      public function isStartTag()
 160      {
 161          return (bool) ($this->type & self::START_TAG);
 162      }
 163      public function isVerbatim()
 164      {
 165          return ($this->name === 'v');
 166      }
 167      public function getAttribute($attrName)
 168      {
 169          return $this->attributes[$attrName];
 170      }
 171      public function hasAttribute($attrName)
 172      {
 173          return isset($this->attributes[$attrName]);
 174      }
 175      public function removeAttribute($attrName)
 176      {
 177          unset($this->attributes[$attrName]);
 178      }
 179      public function setAttribute($attrName, $attrValue)
 180      {
 181          $this->attributes[$attrName] = $attrValue;
 182      }
 183      public function setAttributes(array $attributes)
 184      {
 185          $this->attributes = $attributes;
 186      }
 187  }