File: RemexCompatBuilder.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (39 lines) | stat: -rw-r--r-- 985 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php

namespace MediaWiki\Tidy;

use Wikimedia\RemexHtml\TreeBuilder\Marker;
use Wikimedia\RemexHtml\TreeBuilder\TreeBuilder;

/**
 * @internal
 */
class RemexCompatBuilder extends TreeBuilder {
	public function reconstructAFE( $sourceStart ) {
		// These checks are redundant with the parent, but here for performance
		$entry = $this->afe->getTail();
		if ( !$entry || $entry instanceof Marker || $entry->stackIndex !== null ) {
			return;
		}

		// Don't reconstruct AFE in file figures to respect the spec,
		// https://www.mediawiki.org/wiki/Specs/HTML#Media
		$len = $this->stack->length();
		while ( $len > 0 ) {
			$i = $this->stack->item( $len - 1 );
			if ( $i->htmlName === 'figcaption' ) {
				break;
			}
			if ( $i->htmlName === 'figure' ) {
				foreach ( $i->attrs->getValues() as $k => $v ) {
					if ( $k === 'typeof' && preg_match( '/\bmw:File\b/', $v ) ) {
						return;
					}
				}
				break;
			}
			$len -= 1;
		}
		parent::reconstructAFE( $sourceStart );
	}
}