Code Duplication    Length = 39-39 lines in 3 locations

src/Tokens/Elements/Tbody.php 1 location

@@ 16-54 (lines=39) @@
13
 *
14
 * https://html.spec.whatwg.org/multipage/semantics.html#the-tbody-element
15
 */
16
class Tbody extends OpenElement
17
{
18
    protected function doClean(LoggerInterface $logger)
19
    {
20
        if ($this->configuration->get('clean-strategy') != Configuration::CLEAN_STRATEGY_LENIENT) {
21
            // "table" must be parent.
22
            $parent = $this->getParent();
23
            if ($parent !== null && $parent->getName() != 'table') {
24
                $logger->debug('Element "tbody" must be a child of the "table" element.');
25
26
                return false;
27
            }
28
29
            // Children can be "tr" and script supporting elements.
30
            foreach ($this->children as $child) {
31
                if ($child->getType() == Token::COMMENT) {
32
                    continue;
33
                }
34
35
                if ($child->getType() !== Token::ELEMENT) {
36
                    $logger->debug('Removing ' . $child . '. Only elements allowed as children of "tbody" element.');
37
                    $this->removeChild($child);
38
39
                    continue;
40
                }
41
42
                if ($child->getName() == 'tr' ||
43
                    $child instanceof ScriptSupporting) {
44
                    continue;
45
                }
46
47
                $logger->debug('Removing ' . $child . '. Only "tr" and script supporting elements allowed as children of "tbody" element.');
48
                $this->removeChild($child);
49
            }
50
        }
51
52
        return true;
53
    }
54
}
55

src/Tokens/Elements/Tfoot.php 1 location

@@ 16-54 (lines=39) @@
13
 *
14
 * https://html.spec.whatwg.org/multipage/semantics.html#the-tfoot-element
15
 */
16
class Tfoot extends OpenElement
17
{
18
    protected function doClean(LoggerInterface $logger)
19
    {
20
        if ($this->configuration->get('clean-strategy') != Configuration::CLEAN_STRATEGY_LENIENT) {
21
            // "table" must be parent.
22
            $parent = $this->getParent();
23
            if ($parent !== null && $parent->getName() != 'table') {
24
                $logger->debug('Element "tfoot" must be a child of the "table" element.');
25
26
                return false;
27
            }
28
29
            // Children can be "tr" and script supporting elements.
30
            foreach ($this->children as $child) {
31
                if ($child->getType() == Token::COMMENT) {
32
                    continue;
33
                }
34
35
                if ($child->getType() !== Token::ELEMENT) {
36
                    $logger->debug('Removing ' . $child . '. Only elements allowed as children of "tfoot" element.');
37
                    $this->removeChild($child);
38
39
                    continue;
40
                }
41
42
                if ($child->getName() == 'tr' ||
43
                    $child instanceof ScriptSupporting) {
44
                    continue;
45
                }
46
47
                $logger->debug('Removing ' . $child . '. Only "tr" and script supporting elements allowed as children of "tfoot" element.');
48
                $this->removeChild($child);
49
            }
50
        }
51
52
        return true;
53
    }
54
}
55

src/Tokens/Elements/Thead.php 1 location

@@ 16-54 (lines=39) @@
13
 *
14
 * https://html.spec.whatwg.org/multipage/semantics.html#the-thead-element
15
 */
16
class Thead extends OpenElement
17
{
18
    protected function doClean(LoggerInterface $logger)
19
    {
20
        if ($this->configuration->get('clean-strategy') != Configuration::CLEAN_STRATEGY_LENIENT) {
21
            // "table" must be parent.
22
            $parent = $this->getParent();
23
            if ($parent !== null && $parent->getName() != 'table') {
24
                $logger->debug('Element "thead" must be a child of the "table" element.');
25
26
                return false;
27
            }
28
29
            // Children can be "tr" and script supporting elements.
30
            foreach ($this->children as $child) {
31
                if ($child->getType() == Token::COMMENT) {
32
                    continue;
33
                }
34
35
                if ($child->getType() !== Token::ELEMENT) {
36
                    $logger->debug('Removing ' . $child . '. Only elements allowed as children of "thead" element.');
37
                    $this->removeChild($child);
38
39
                    continue;
40
                }
41
42
                if ($child->getName() == 'tr' ||
43
                    $child instanceof ScriptSupporting) {
44
                    continue;
45
                }
46
47
                $logger->debug('Removing ' . $child . '. Only "tr" and script supporting elements allowed as children of "thead" element.');
48
                $this->removeChild($child);
49
            }
50
        }
51
52
        return true;
53
    }
54
}
55