Example #1
0
 public static function createCodeInfo(string $fileName, int $line = null, int $startLineNo = null, int $endLineNo = null, string $message = null)
 {
     if ($line == 0) {
         $line = null;
         if ($startLineNo === null) {
             $startLineNo = 1;
         }
         if ($endLineNo === null) {
             $endLineNo = 4;
         }
     }
     $codeInfo = new CodeInfo($fileName, $line, $message);
     if ($line !== null) {
         if ($startLineNo === null) {
             $startLineNo = $line <= 2 ? 1 : $line - 2;
         }
         if ($endLineNo === null) {
             $endLineNo = $line + 2;
         }
     }
     if ($startLineNo === null || $endLineNo === null) {
         return $codeInfo;
     }
     $codeInfo->setStartLineNo($startLineNo);
     $codeInfo->setEndLineNo($endLineNo);
     $fileLines = null;
     try {
         $fileLines = IoUtils::file($fileName);
     } catch (IoException $e) {
         return $codeInfo;
     }
     $numLines = sizeof($fileLines);
     $startIndex = $startLineNo - 1;
     $endIndex = $endLineNo - 1;
     $snippetLines = array();
     for ($i = $startIndex; $i < $numLines && $i <= $endIndex; $i++) {
         $snippetLines[$i + 1] = $fileLines[$i];
     }
     $codeInfo->setSnippetLines($snippetLines);
     return $codeInfo;
 }