Chris@14: Chris@14: * Chris@14: * For the full copyright and license information, please view the LICENSE Chris@14: * file that was distributed with this source code. Chris@14: */ Chris@14: Chris@14: namespace SebastianBergmann\CodeCoverage\Report\Xml; Chris@14: Chris@14: use TheSeer\Tokenizer\NamespaceUri; Chris@14: use TheSeer\Tokenizer\Tokenizer; Chris@14: use TheSeer\Tokenizer\XMLSerializer; Chris@14: Chris@14: class Source Chris@14: { Chris@14: /** @var \DOMElement */ Chris@14: private $context; Chris@14: Chris@14: /** Chris@14: * @param \DOMElement $context Chris@14: */ Chris@14: public function __construct(\DOMElement $context) Chris@14: { Chris@14: $this->context = $context; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @param string $source Chris@14: */ Chris@14: public function setSourceCode(string $source) Chris@14: { Chris@14: $context = $this->context; Chris@14: Chris@14: $tokens = (new Tokenizer())->parse($source); Chris@14: $srcDom = (new XMLSerializer(new NamespaceUri($context->namespaceURI)))->toDom($tokens); Chris@14: Chris@14: $context->parentNode->replaceChild( Chris@14: $context->ownerDocument->importNode($srcDom->documentElement, true), Chris@14: $context Chris@14: ); Chris@14: } Chris@14: }