* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace HtmlSanitizer\Visitor; use HtmlSanitizer\Model\Cursor; use HtmlSanitizer\Node\TagNodeInterface; use HtmlSanitizer\Node\NodeInterface; /** * @author Titouan Galopin */ trait HasChildrenNodeVisitorTrait { use TagVisitorTrait; abstract protected function createNode(\DOMNode $domNode, Cursor $cursor): NodeInterface; public function enterNode(\DOMNode $domNode, Cursor $cursor) { $node = $this->createNode($domNode, $cursor); if ($node instanceof TagNodeInterface && isset($this->config['allowed_attributes'])) { $this->setAttributes($domNode, $node, $this->config['allowed_attributes']); } $cursor->node->addChild($node); $cursor->node = $node; } public function leaveNode(\DOMNode $domNode, Cursor $cursor) { $cursor->node = $cursor->node->getParent(); } }