/** * 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('<?', '?>', ' ', '> '), array('', '', ' ', '>'), highlight_string('<? ' . trim($lineStr) . ' ?' . '>', true)); } else { $lines[$lineNo] = trim($lineStr); } if ($lineNo == $toLine) { break; } } } fclose($fp); } return $lines; }