Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
HtmlHelperTrait
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 3
20
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 element
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
6
 startDocument
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace MediaWiki\Html;
4
5use Wikimedia\Assert\Assert;
6use Wikimedia\RemexHtml\Serializer\SerializerNode;
7
8/**
9 * Internal helper trait for HtmlHelper::modifyHtml.
10 *
11 * This is designed to extend a HtmlFormatter.
12 *
13 * @phan-file-suppress PhanTraitParentReference
14 */
15trait HtmlHelperTrait {
16    /** @var callable */
17    private $shouldModifyCallback;
18
19    /** @var callable */
20    private $modifyCallback;
21
22    public function __construct( $options, callable $shouldModifyCallback, callable $modifyCallback ) {
23        parent::__construct( $options );
24        $this->shouldModifyCallback = $shouldModifyCallback;
25        $this->modifyCallback = $modifyCallback;
26    }
27
28    public function element( SerializerNode $parent, SerializerNode $node, $contents ) {
29        if ( ( $this->shouldModifyCallback )( $node ) ) {
30            $node = clone $node;
31            $node->attrs = clone $node->attrs;
32            $newNode = ( $this->modifyCallback )( $node );
33            Assert::parameterType( SerializerNode::class, $newNode, 'return value' );
34            return parent::element( $parent, $newNode, $contents );
35        } else {
36            return parent::element( $parent, $node, $contents );
37        }
38    }
39
40    public function startDocument( $fragmentNamespace, $fragmentName ) {
41        return '';
42    }
43}