5use Wikimedia\RemexHtml\Tokenizer\Attributes;
6use Wikimedia\RemexHtml\Tokenizer\NullTokenHandler;
14 private $insideNonVisibleTag =
false;
22 public function characters( $text, $start, $length, $sourceStart, $sourceLength ) {
23 if ( !$this->insideNonVisibleTag ) {
24 $this->text .= substr( $text, $start, $length );
28 public function startTag( $name, Attributes $attrs, $selfClose, $sourceStart, $sourceLength ) {
29 if ( $this->isNonVisibleTag( $name ) ) {
30 $this->insideNonVisibleTag =
true;
34 if ( $this->isBlockLevelTag( $name ) ) {
39 public function endTag( $name, $sourceStart, $sourceLength ) {
40 if ( $this->isNonVisibleTag( $name ) ) {
41 $this->insideNonVisibleTag =
false;
45 if ( $this->isBlockLevelTag( $name ) ) {
56 private const BLOCK_LEVEL_TAGS = [
106 private function isBlockLevelTag( $tagName ) {
107 $key = strtolower( trim( $tagName ) );
108 return isset( self::BLOCK_LEVEL_TAGS[$key] );
111 private const NON_VISIBLE_TAGS = [
127 private function isNonVisibleTag( $tagName ) {
128 $key = strtolower( trim( $tagName ) );
129 return isset( self::NON_VISIBLE_TAGS[$key] );