protected function processCurrentTag()
	{
		// Invalidate current tag if tags are disabled and current tag would not close the last open
		// tag and is not a system tag
		if (($this->context['flags'] & self::RULE_IGNORE_TAGS)
		 && !$this->currentTag->canClose(end($this->openTags))
		 && !$this->currentTag->isSystemTag())
		{
			$this->currentTag->invalidate();
		}

		$tagPos = $this->currentTag->getPos();
		$tagLen = $this->currentTag->getLen();

		// Test whether the cursor passed this tag's position already
		if ($this->pos > $tagPos && !$this->currentTag->isInvalid())
		{
			// Test whether this tag is paired with a start tag and this tag is still open
			$startTag = $this->currentTag->getStartTag();

			if ($startTag && in_array($startTag, $this->openTags, true))
			{
				// Create an end tag that matches current tag's start tag, which consumes as much of
				// the same text as current tag and is paired with the same start tag
				$this->addEndTag(
					$startTag->getName(),
					$this->pos,
					max(0, $tagPos + $tagLen - $this->pos)
				)->pairWith($startTag);

				// Note that current tag is not invalidated, it's merely replaced
				return;
			}

			// If this is an ignore tag, try to ignore as much as the remaining text as possible
			if ($this->currentTag->isIgnoreTag())
			{
				$ignoreLen = $tagPos + $tagLen - $this->pos;

				if ($ignoreLen > 0)
				{
					// Create a new ignore tag and move on
					$this->addIgnoreTag($this->pos, $ignoreLen);

					return;
				}
			}

			// Skipped tags are invalidated
			$this->currentTag->invalidate();
		}

		if ($this->currentTag->isInvalid())
		{
			return;
		}

		if ($this->currentTag->isIgnoreTag())
		{
			$this->outputIgnoreTag($this->currentTag);
		}
		elseif ($this->currentTag->isBrTag())
		{
			// Output the tag if it's allowed, ignore it otherwise
			if (!($this->context['flags'] & self::RULE_PREVENT_BR))
			{
				$this->outputBrTag($this->currentTag);
			}
		}
		elseif ($this->currentTag->isParagraphBreak())
		{
			$this->outputText($this->currentTag->getPos(), 0, true);
		}
		elseif ($this->currentTag->isVerbatim())
		{
			$this->outputVerbatim($this->currentTag);
		}
		elseif ($this->currentTag->isStartTag())
		{
			$this->processStartTag($this->currentTag);
		}
		else
		{
			$this->processEndTag($this->currentTag);
		}
	}
protected function processCurrentTag()
	{
		// Invalidate current tag if tags are disabled and current tag would not close the last open
		// tag and is not a system tag
		if (($this->context['flags'] & self::RULE_IGNORE_TAGS)
		 && !$this->currentTag->canClose(end($this->openTags))
		 && !$this->currentTag->isSystemTag())
		{
			$this->currentTag->invalidate();
		}

		$tagPos = $this->currentTag->getPos();
		$tagLen = $this->currentTag->getLen();

		// Test whether the cursor passed this tag's position already
		if ($this->pos > $tagPos && !$this->currentTag->isInvalid())
		{
			// Test whether this tag is paired with a start tag and this tag is still open
			$startTag = $this->currentTag->getStartTag();

			if ($startTag && in_array($startTag, $this->openTags, true))
			{
				// Create an end tag that matches current tag's start tag, which consumes as much of
				// the same text as current tag and is paired with the same start tag
				$this->addEndTag(
					$startTag->getName(),
					$this->pos,
					max(0, $tagPos + $tagLen - $this->pos)
				)->pairWith($startTag);

				// Note that current tag is not invalidated, it's merely replaced
				return;
			}

			// If this is an ignore tag, try to ignore as much as the remaining text as possible
			if ($this->currentTag->isIgnoreTag())
			{
				$ignoreLen = $tagPos + $tagLen - $this->pos;

				if ($ignoreLen > 0)
				{
					// Create a new ignore tag and move on
					$this->addIgnoreTag($this->pos, $ignoreLen);

					return;
				}
			}

			// Skipped tags are invalidated
			$this->currentTag->invalidate();
		}

		if ($this->currentTag->isInvalid())
		{
			return;
		}

		if ($this->currentTag->isIgnoreTag())
		{
			$this->outputIgnoreTag($this->currentTag);
		}
		elseif ($this->currentTag->isBrTag())
		{
			// Output the tag if it's allowed, ignore it otherwise
			if (!($this->context['flags'] & self::RULE_PREVENT_BR))
			{
				$this->outputBrTag($this->currentTag);
			}
		}
		elseif ($this->currentTag->isParagraphBreak())
		{
			$this->outputText($this->currentTag->getPos(), 0, true);
		}
		elseif ($this->currentTag->isVerbatim())
		{
			$this->outputVerbatim($this->currentTag);
		}
		elseif ($this->currentTag->isStartTag())
		{
			$this->processStartTag($this->currentTag);
		}
		else
		{
			$this->processEndTag($this->currentTag);
		}
	}
protected function processCurrentTag ( ) { // Invalidate current tag if tags are disabled and current tag would not close the last open // tag and is not a system tag if ( ( $ this -> context [ 'flags' ] & self :: RULE_IGNORE_TAGS ) && ! $ this -> currentTag -> canClose ( end ( $ this -> openTags ) ) && ! $ this -> currentTag -> isSystemTag ( ) ) { $ this -> currentTag -> invalidate ( ) ; } $ tagPos = $ this -> currentTag -> getPos ( ) ; $ tagLen = $ this -> currentTag -> getLen ( ) ; // Test whether the cursor passed this tag's position already if ( $ this -> pos > $ tagPos && ! $ this -> currentTag -> isInvalid ( ) ) { // Test whether this tag is paired with a start tag and this tag is still open $ startTag = $ this -> currentTag -> getStartTag ( ) ; if ( $ startTag && in_array ( $ startTag , $ this -> openTags , true ) ) { // Create an end tag that matches current tag's start tag, which consumes as much of // the same text as current tag and is paired with the same start tag $ this -> addEndTag ( $ startTag -> getName ( ) , $ this -> pos , max ( 0 , $ tagPos + $ tagLen - $ this -> pos ) ) -> pairWith ( $ startTag ) ; // Note that current tag is not invalidated, it's merely replaced return ; } // If this is an ignore tag, try to ignore as much as the remaining text as possible if ( $ this -> currentTag -> isIgnoreTag ( ) ) { $ ignoreLen = $ tagPos + $ tagLen - $ this -> pos ; if ( $ ignoreLen > 0 ) { // Create a new ignore tag and move on $ this -> addIgnoreTag ( $ this -> pos , $ ignoreLen ) ; return ; } } // Skipped tags are invalidated $ this -> currentTag -> invalidate ( ) ; } if ( $ this -> currentTag -> isInvalid ( ) ) { return ; } if ( $ this -> currentTag -> isIgnoreTag ( ) ) { $ this -> outputIgnoreTag ( $ this -> currentTag ) ; } elseif ( $ this -> currentTag -> isBrTag ( ) ) { // Output the tag if it's allowed, ignore it otherwise if ( ! ( $ this -> context [ 'flags' ] & self :: RULE_PREVENT_BR ) ) { $ this -> outputBrTag ( $ this -> currentTag ) ; } } elseif ( $ this -> currentTag -> isParagraphBreak ( ) ) { $ this -> outputText ( $ this -> currentTag -> getPos ( ) , 0 , true ) ; } elseif ( $ this -> currentTag -> isVerbatim ( ) ) { $ this -> outputVerbatim ( $ this -> currentTag ) ; } elseif ( $ this -> currentTag -> isStartTag ( ) ) { $ this -> processStartTag ( $ this -> currentTag ) ; } else { $ this -> processEndTag ( $ this -> currentTag ) ; } }
Process current tag

@return void
Process current tag