private function getClassShortContents($filename, $line) { if (!$line || !is_file($filename)) { return "File does not exists {$filename}:{$line}."; } $lines = explode("\n", file_get_contents($filename)); $countLines = count($lines); $maxDiff = 7; $fromLine = $line - $maxDiff - 1; if ($fromLine < 0) { $fromLine = 0; } $toLine = $line + $maxDiff; if ($toLine > $countLines) { $toLine = $countLines; } $maxStrLen = strlen($toLine) + 4; $outputLines = array_slice($lines, $fromLine, $maxDiff * 2 + 1, true); foreach ($outputLines as $key => &$currentLine) { $currentLine = str_replace("\t", ' ', $currentLine); $currentLineNumber = $key + 1; try { $lineLink = $this->editor->createLinkToFile($filename, $currentLineNumber); $lineLink = htmlspecialchars($lineLink); $lineTag = "<a href='{$lineLink}'>#{$currentLineNumber}</a>"; } catch (CannotGenerateLinkException $e) { $lineTag = '#' . $currentLineNumber; } $currentLine = $lineTag . str_pad('', $maxStrLen - strlen($currentLineNumber), ' ') . htmlspecialchars($currentLine); } $outputLines[$line - 1] = '<span class="error-line">' . $outputLines[$line - 1] . '</span>'; return implode("\n", $outputLines); }
/** * @dataProvider providerTestRegisterDirectoryMap * @param EditorInterface $editor * @param $fromDir * @param $toDir * @param $file * @param $line * @param $expectedResultFile */ public function testRegisterDirectoryMap(EditorInterface $editor, $fromDir, $toDir, $file, $line, $expectedResultFile) { $editor->registerDirectoryMap($fromDir, $toDir); $link = $editor->createLinkToFile($file, $line); list(, $stringParams) = explode('?', $link, 2); parse_str($stringParams, $data); $this->assertEquals($line, $data['line']); $this->assertSame($expectedResultFile, $data['file']); }