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 File Chris@14: { Chris@14: /** Chris@14: * @var \DOMDocument Chris@14: */ Chris@14: private $dom; Chris@14: Chris@14: /** Chris@14: * @var \DOMElement Chris@14: */ Chris@14: private $contextNode; Chris@14: Chris@14: public function __construct(\DOMElement $context) Chris@14: { Chris@14: $this->dom = $context->ownerDocument; Chris@14: $this->contextNode = $context; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return \DOMElement Chris@14: */ Chris@14: protected function getContextNode() Chris@14: { Chris@14: return $this->contextNode; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return \DOMDocument Chris@14: */ Chris@14: protected function getDomDocument() Chris@14: { Chris@14: return $this->dom; Chris@14: } Chris@14: Chris@14: public function getTotals() Chris@14: { Chris@14: $totalsContainer = $this->contextNode->firstChild; Chris@14: Chris@14: if (!$totalsContainer) { Chris@14: $totalsContainer = $this->contextNode->appendChild( Chris@14: $this->dom->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'totals' Chris@14: ) Chris@14: ); Chris@14: } Chris@14: Chris@14: return new Totals($totalsContainer); Chris@14: } Chris@14: Chris@14: public function getLineCoverage($line) Chris@14: { Chris@14: $coverage = $this->contextNode->getElementsByTagNameNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'coverage' Chris@14: )->item(0); Chris@14: Chris@14: if (!$coverage) { Chris@14: $coverage = $this->contextNode->appendChild( Chris@14: $this->dom->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'coverage' Chris@14: ) Chris@14: ); Chris@14: } Chris@14: Chris@14: $lineNode = $coverage->appendChild( Chris@14: $this->dom->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'line' Chris@14: ) Chris@14: ); Chris@14: Chris@14: return new Coverage($lineNode, $line); Chris@14: } Chris@14: }