Exemplo n.º 1
0
 /**
  * Get a range of lines from the source file
  *
  * <b>Note:</b> The line reading might fail (without errors) for several reasons. 
  * One might be thie assertion does not belong to a test case, in which the file 
  * path is usually defined. Therefore, you are not guaranteed to get all requested
  * lines. Also, if you request lines that does not exist in the file, this method
  * will read as many as it can, and then return.
  * I.e. <samp>$a->getLines(1,999999)</samp> will return lines 1-10 in a file with 
  * a total of 10 lines.
  *
  * @param  int
  * @param  int
  * @param  bool   Apply syntax highlighting, using html, to the line.
  * @return array  (int lineNo => string line) You must check if the requested 
  *                lines accually was read, by calling isset($lines[123]).
  */
 public function getLines($fromLine, $toLine, $html = true)
 {
     $lines = array();
     if ($this->testCase && ($fp = fopen($this->testCase->getClassInfo()->getFileName(), 'r'))) {
         $lineNo = 0;
         while (!feof($fp)) {
             $lineStr = fgets($fp, 4096);
             $lineNo++;
             if ($lineNo >= $fromLine && $lineNo <= $toLine) {
                 if ($html) {
                     $lines[$lineNo] = str_replace(array('&lt;?', '?&gt;', '&nbsp;', '> '), array('', '', ' ', '>'), highlight_string('<? ' . trim($lineStr) . ' ?' . '>', true));
                 } else {
                     $lines[$lineNo] = trim($lineStr);
                 }
                 if ($lineNo == $toLine) {
                     break;
                 }
             }
         }
         fclose($fp);
     }
     return $lines;
 }