SebastianBergmann\CodeCoverage\Report\Html\File::loadFile PHP Method

loadFile() protected method

protected loadFile ( string $file ) : array
$file string
return array
    protected function loadFile($file)
    {
        $buffer = file_get_contents($file);
        $tokens = token_get_all($buffer);
        $result = [''];
        $i = 0;
        $stringFlag = false;
        $fileEndsWithNewLine = substr($buffer, -1) == "\n";
        unset($buffer);
        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(["\t", ' '], ['&nbsp;&nbsp;&nbsp;&nbsp;', '&nbsp;'], htmlspecialchars($value, $this->htmlspecialcharsFlags));
            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_FINALLY:
                                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:
                                case T_YIELD:
                                    $colour = 'keyword';
                                    break;
                                default:
                                    $colour = 'default';
                            }
                        }
                        $result[$i] .= sprintf('<span class="%s">%s</span>', $colour, $line);
                    }
                    if (isset($lines[$jj + 1])) {
                        $result[++$i] = '';
                    }
                }
            }
        }
        if ($fileEndsWithNewLine) {
            unset($result[count($result) - 1]);
        }
        return $result;
    }