<?php /* * $Id: CoverageXmlParser.php 14663 2005-03-23 19:27:27Z npac $ * * Copyright(c) 2004-2006, SpikeSource Inc. All Rights Reserved. * Licensed under the Open Software License version 2.1 * (See http://www.spikesource.com/license.html) */ ?> <?php require_once dirname(__FILE__) . "/BasicXmlParser.php"; /** * Special parser for SpikePHPCoverage data parsing * Expect input in following format: * <spike-phpcoverage> * <file path="/complete/file/path"> * <line line-number="10" frequency="1"/> * <line line-number="12" frequency="2"/> * </file> * <file path="/another/file/path"> * ... * </file> * </spike-phpcoverage> * * @author Nimish Pachapurkar <npac@spikesource.com> * @version $Revision: $ * @package SpikePHPCoverage_Parser */ class CoverageXmlParser extends BasicXmlParser { /*{{{ Members */ protected $_data = array(); protected $_lastFilePath; /*}}}*/ /*{{{ public function startHandler() */ public function startHandler($xp, $name, $attrs) { switch($name) { case "FILE": $fileAttributes = $this->handleAttrTag($name, $attrs); $this->_lastFilePath = $fileAttributes["PATH"]; if( ! isset($this->_data[$this->_lastFilePath])) { $this->_data[$this->_lastFilePath] = array(); } break; case "LINE": $lineAttributes = $this->handleAttrTag($name, $attrs); $lineNumber = (int)$lineAttributes["LINE-NUMBER"]; if( ! isset($this->_data[$this->_lastFilePath][$lineNumber])) { $this->_data[$this->_lastFilePath][$lineNumber] = (int)$lineAttributes["FREQUENCY"]; } else { $this->_data[$this->_lastFilePath][$lineNumber] += (int)$lineAttributes["FREQUENCY"]; } break; } } /*}}}*/ /*{{{ public function getCoverageData() */ /** * Returns coverage data array from the XML * Format: * Array * ( * [/php/src/remote/RemoteCoverageRecorder.php] => Array * ( * [220] => 1 * [221] => 1 * ) * * [/opt/oss/share/apache2/htdocs/web/sample.php] => Array * ( * [16] => 1 * [18] => 1 * ) * ) * * @access public */ public function getCoverageData() { return $this->_data; } /*}}}*/ } ?>