protected function PHP_CodeCoverage_Report_HTML_Renderer_File::loadFile

Parameters

string $file:

Return value

array

1 call to PHP_CodeCoverage_Report_HTML_Renderer_File::loadFile()
PHP_CodeCoverage_Report_HTML_Renderer_File::renderSource in drupal/core/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/File.php

File

drupal/core/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/File.php, line 425

Class

PHP_CodeCoverage_Report_HTML_Renderer_File
Renders a PHP_CodeCoverage_Report_Node_File node.

Code

protected function loadFile($file) {
  $buffer = file_get_contents($file);
  $lines = explode("\n", str_replace("\t", '    ', $buffer));
  $result = array();
  if (count($lines) == 0) {
    return $result;
  }
  $lines = array_map('rtrim', $lines);
  if (!$this->highlight) {
    unset($lines[count($lines) - 1]);
    return $lines;
  }
  $tokens = token_get_all($buffer);
  $stringFlag = FALSE;
  $i = 0;
  $result[$i] = '';
  foreach ($tokens as $j => $token) {
    if (is_string($token)) {
      if ($token === '"' && $tokens[$j - 1] !== '\\') {
        $result[$i] .= sprintf('<span class="string">%s</span>', htmlspecialchars($token));
        $stringFlag = !$stringFlag;
      }
      else {
        $result[$i] .= sprintf('<span class="keyword">%s</span>', htmlspecialchars($token));
      }
      continue;
    }
    list($token, $value) = $token;
    $value = str_replace(array(
      "\t",
      ' ',
    ), array(
      '&nbsp;&nbsp;&nbsp;&nbsp;',
      '&nbsp;',
    ), htmlspecialchars($value));
    if ($value === "\n") {
      $result[++$i] = '';
    }
    else {
      $lines = explode("\n", $value);
      foreach ($lines as $jj => $line) {
        $line = trim($line);
        if ($line !== '') {
          if ($stringFlag) {
            $colour = 'string';
          }
          else {
            switch ($token) {
              case T_INLINE_HTML:
                $colour = 'html';
                break;
              case T_COMMENT:
              case T_DOC_COMMENT:
                $colour = 'comment';
                break;
              case T_ABSTRACT:
              case T_ARRAY:
              case T_AS:
              case T_BREAK:
              case T_CALLABLE:
              case T_CASE:
              case T_CATCH:
              case T_CLASS:
              case T_CLONE:
              case T_CONTINUE:
              case T_DEFAULT:
              case T_ECHO:
              case T_ELSE:
              case T_ELSEIF:
              case T_EMPTY:
              case T_ENDDECLARE:
              case T_ENDFOR:
              case T_ENDFOREACH:
              case T_ENDIF:
              case T_ENDSWITCH:
              case T_ENDWHILE:
              case T_EXIT:
              case T_EXTENDS:
              case T_FINAL:
              case T_FOREACH:
              case T_FUNCTION:
              case T_GLOBAL:
              case T_IF:
              case T_IMPLEMENTS:
              case T_INCLUDE:
              case T_INCLUDE_ONCE:
              case T_INSTANCEOF:
              case T_INSTEADOF:
              case T_INTERFACE:
              case T_ISSET:
              case T_LOGICAL_AND:
              case T_LOGICAL_OR:
              case T_LOGICAL_XOR:
              case T_NAMESPACE:
              case T_NEW:
              case T_PRIVATE:
              case T_PROTECTED:
              case T_PUBLIC:
              case T_REQUIRE:
              case T_REQUIRE_ONCE:
              case T_RETURN:
              case T_STATIC:
              case T_THROW:
              case T_TRAIT:
              case T_TRY:
              case T_UNSET:
              case T_USE:
              case T_VAR:
              case T_WHILE:
                $colour = 'keyword';
                break;
              default:
                $colour = 'default';
            }
          }
          $result[$i] .= sprintf('<span class="%s">%s</span>', $colour, $line);
        }
        if (isset($lines[$jj + 1])) {
          $result[++$i] = '';
        }
      }
    }
  }
  unset($result[count($result) - 1]);
  return $result;
}