5 use Wikimedia\RemexHtml\Tokenizer\Attributes;
6 use Wikimedia\RemexHtml\Tokenizer\NullTokenHandler;
13 private $insideNonVisibleTag =
false;
20 public function characters( $text, $start, $length, $sourceStart, $sourceLength ) {
21 if ( !$this->insideNonVisibleTag ) {
22 $this->text .= substr( $text, $start, $length );
26 public function startTag( $name, Attributes $attrs, $selfClose, $sourceStart, $sourceLength ) {
27 if ( $this->isNonVisibleTag( $name ) ) {
28 $this->insideNonVisibleTag =
true;
32 if ( $this->isBlockLevelTag( $name ) ) {
37 public function endTag( $name, $sourceStart, $sourceLength ) {
38 if ( $this->isNonVisibleTag( $name ) ) {
39 $this->insideNonVisibleTag =
false;
43 if ( $this->isBlockLevelTag( $name ) ) {
54 private const BLOCK_LEVEL_TAGS = [
104 private function isBlockLevelTag( $tagName ) {
105 $key = strtolower( trim( $tagName ) );
106 return isset( self::BLOCK_LEVEL_TAGS[$key] );
109 private const NON_VISIBLE_TAGS = [
125 private function isNonVisibleTag( $tagName ) {
126 $key = strtolower( trim( $tagName ) );
127 return isset( self::NON_VISIBLE_TAGS[$key] );