PhpSpec\CodeGenerator\Writer\TokenizedCodeWriter::writeAtEndOfClass PHP Method

writeAtEndOfClass() private method

private writeAtEndOfClass ( string $class, string $method, boolean $prependNewLine = false ) : string
$class string
$method string
$prependNewLine boolean
return string
    private function writeAtEndOfClass($class, $method, $prependNewLine = false)
    {
        $tokens = token_get_all($class);
        $searching = false;
        $inString = false;
        $searchPattern = array();
        for ($i = count($tokens) - 1; $i >= 0; $i--) {
            $token = $tokens[$i];
            if ($token === '}' && !$inString) {
                $searching = true;
                continue;
            }
            if (!$searching) {
                continue;
            }
            if ($token === '"') {
                $inString = !$inString;
                continue;
            }
            if ($this->isWritePoint($token)) {
                $line = $token[2];
                return $this->insertStringAfterLine($class, $method, $line, $token[0] === T_COMMENT ?: $prependNewLine);
            }
            array_unshift($searchPattern, is_array($token) ? $token[1] : $token);
            if ($token === '{') {
                $search = implode('', $searchPattern);
                $position = strpos($class, $search) + strlen($search) - 1;
                return substr_replace($class, "\n" . $method . "\n", $position, 0);
            }
        }
    }