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: class Report extends File Chris@14: { Chris@14: public function __construct($name) Chris@14: { Chris@14: $dom = new \DOMDocument(); Chris@14: $dom->loadXML(''); Chris@14: Chris@14: $contextNode = $dom->getElementsByTagNameNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'file' Chris@14: )->item(0); Chris@14: Chris@14: parent::__construct($contextNode); Chris@14: $this->setName($name); Chris@14: } Chris@14: Chris@14: private function setName($name) Chris@14: { Chris@14: $this->getContextNode()->setAttribute('name', \basename($name)); Chris@14: $this->getContextNode()->setAttribute('path', \dirname($name)); Chris@14: } Chris@14: Chris@14: public function asDom() Chris@14: { Chris@14: return $this->getDomDocument(); Chris@14: } Chris@14: Chris@14: public function getFunctionObject($name) Chris@14: { Chris@14: $node = $this->getContextNode()->appendChild( Chris@14: $this->getDomDocument()->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'function' Chris@14: ) Chris@14: ); Chris@14: Chris@14: return new Method($node, $name); Chris@14: } Chris@14: Chris@14: public function getClassObject($name) Chris@14: { Chris@14: return $this->getUnitObject('class', $name); Chris@14: } Chris@14: Chris@14: public function getTraitObject($name) Chris@14: { Chris@14: return $this->getUnitObject('trait', $name); Chris@14: } Chris@14: Chris@14: private function getUnitObject($tagName, $name) Chris@14: { Chris@14: $node = $this->getContextNode()->appendChild( Chris@14: $this->getDomDocument()->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: $tagName Chris@14: ) Chris@14: ); Chris@14: Chris@14: return new Unit($node, $name); Chris@14: } Chris@14: Chris@14: public function getSource() Chris@14: { Chris@14: $source = $this->getContextNode()->getElementsByTagNameNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'source' Chris@14: )->item(0); Chris@14: Chris@14: if (!$source) { Chris@14: $source = $this->getContextNode()->appendChild( Chris@14: $this->getDomDocument()->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'source' Chris@14: ) Chris@14: ); Chris@14: } Chris@14: Chris@14: return new Source($source); Chris@14: } Chris@14: }