protected function _make_internal_message(\Reflector $reflection) { $type = false; $name = false; $location = false; if($reflection instanceof \ReflectionFunction) { $type = 'function'; $name = $reflection->name; } elseif($reflection instanceof \ReflectionClass) { $type = 'class'; $name = $reflection->name; } elseif($reflection instanceof \ReflectionMethod) { $type = 'method'; $name = $reflection->getDeclaringClass()->name . '::' . $reflection->name; } $location = $reflection->getFileName() . ':' . $reflection->getStartLine(); Ev\Evaluer::make_internal_from( Ev\Evaluer::SOURCE_OUTPUT, sprintf("Source Code for %s '%s' (%s)", $type, $name, $location) ); }
/** * Constructor * * @param Reflector|string $commentOrReflector */ public function __construct($commentOrReflector) { if ($commentOrReflector instanceof Reflector) { $this->_reflector = $commentOrReflector; if (!method_exists($commentOrReflector, 'getDocComment')) { // require_once 'Zend/Reflection/Exception.php'; throw new Zend_Reflection_Exception('Reflector must contain method "getDocComment"'); } $docComment = $commentOrReflector->getDocComment(); $lineCount = substr_count($docComment, "\n"); $this->_startLine = $this->_reflector->getStartLine() - $lineCount - 1; $this->_endLine = $this->_reflector->getStartLine() - 1; } elseif (is_string($commentOrReflector)) { $docComment = $commentOrReflector; } else { // require_once 'Zend/Reflection/Exception.php'; throw new Zend_Reflection_Exception(get_class($this) . ' must have a (string) DocComment or a Reflector in the constructor'); } if ($docComment == '') { // require_once 'Zend/Reflection/Exception.php'; throw new Zend_Reflection_Exception('DocComment cannot be empty'); } $this->_docComment = $docComment; $this->_parse(); }
/** * Constructor * * @param Reflector|string $commentOrReflector * @param AnnotationManager|null $annotationManager * @return \Zend\Code\Reflection\DocBlockReflection */ public function __construct($commentOrReflector, AnnotationManager $annotationManager = null) { if ($commentOrReflector instanceof \Reflector) { $this->reflector = $commentOrReflector; if (!method_exists($commentOrReflector, 'getDocComment')) { throw new Exception\InvalidArgumentException('Reflector must contain method "getDocComment"'); } $this->docComment = $commentOrReflector->getDocComment(); $lineCount = substr_count($this->docComment, "\n"); $this->startLine = $this->reflector->getStartLine() - $lineCount - 1; $this->endLine = $this->reflector->getStartLine() - 1; } elseif (is_string($commentOrReflector)) { $this->docComment = $commentOrReflector; } else { throw new Exception\InvalidArgumentException(get_class($this) . ' must have a (string) DocComment or a Reflector in the constructor'); } if ($this->docComment == '') { throw new Exception\InvalidArgumentException('DocComment cannot be empty'); } $this->annotationManager = $annotationManager; }
/** * Format the code represented by $reflector. * * @param \Reflector $reflector * * @return string formatted code */ public static function format(\Reflector $reflector) { if ($fileName = $reflector->getFileName()) { if (!is_file($fileName)) { throw new RuntimeException('Source code unavailable.'); } $file = file_get_contents($fileName); $lines = preg_split('/\\r?\\n/', $file); $start = $reflector->getStartLine() - 1; $end = $reflector->getEndLine() - $start; $code = array_slice($lines, $start, $end); // no need to escape this bad boy, since (for now) it's being output raw. // return OutputFormatter::escape(implode(PHP_EOL, $code)); return implode(PHP_EOL, $code); } else { throw new RuntimeException('Source code unavailable.'); } }
/** * Format the code represented by $reflector. * * @param \Reflector $reflector * * @return string formatted code */ public static function format(\Reflector $reflector) { if ($fileName = $reflector->getFileName()) { if (!is_file($fileName)) { throw new RuntimeException('Source code unavailable.'); } $file = file_get_contents($fileName); $start = $reflector->getStartLine(); $end = $reflector->getEndLine() - $start; $colors = new ConsoleColor(); $colors->addTheme('line_number', array('blue')); $highlighter = new Highlighter($colors); return $highlighter->getCodeSnippet($file, $start, 0, $end); // no need to escape this bad boy, since (for now) it's being output raw. // return OutputFormatter::escape(implode(PHP_EOL, $code)); return implode(PHP_EOL, $code); } else { throw new RuntimeException('Source code unavailable.'); } }
/** * Format the code represented by $reflector. * * @param \Reflector $reflector * @param null|string $colorMode (default: null) * * @return string formatted code */ public static function format(\Reflector $reflector, $colorMode = null) { $colorMode = $colorMode ?: Configuration::COLOR_MODE_AUTO; if ($fileName = $reflector->getFileName()) { if (!is_file($fileName)) { throw new RuntimeException('Source code unavailable.'); } $file = file_get_contents($fileName); $start = $reflector->getStartLine(); $end = $reflector->getEndLine() - $start; $factory = new ConsoleColorFactory($colorMode); $colors = $factory->getConsoleColor(); $highlighter = new Highlighter($colors); return $highlighter->getCodeSnippet($file, $start, 0, $end); // no need to escape this bad boy, since (for now) it's being output raw. // return OutputFormatter::escape(implode(PHP_EOL, $code)); return implode(PHP_EOL, $code); } else { throw new RuntimeException('Source code unavailable.'); } }
/** * Constructor * * @param Reflector|string $commentOrReflector * @return \Zend\Code\Reflection\DocBlockReflection */ public function __construct($commentOrReflector, DocBlock\TagManager $tagManager = null) { $this->tagManager = $tagManager ?: new DocBlock\TagManager(DocBlock\TagManager::USE_DEFAULT_PROTOTYPES); if ($commentOrReflector instanceof \Reflector) { $this->reflector = $commentOrReflector; if (!method_exists($commentOrReflector, 'getDocComment')) { throw new Exception\InvalidArgumentException('Reflector must contain method "getDocComment"'); } /* @var MethodReflection $commentOrReflector */ $this->docComment = $commentOrReflector->getDocComment(); // determine line numbers $lineCount = substr_count($this->docComment, "\n"); $this->startLine = $this->reflector->getStartLine() - $lineCount - 1; $this->endLine = $this->reflector->getStartLine() - 1; } elseif (is_string($commentOrReflector)) { $this->docComment = $commentOrReflector; } else { throw new Exception\InvalidArgumentException(get_class($this) . ' must have a (string) DocComment or a Reflector in the constructor'); } if ($this->docComment == '') { throw new Exception\InvalidArgumentException('DocComment cannot be empty'); } $this->reflect(); }
protected function reflectFile(Reflector $ref, SimpleXMLElement $element, $omitFileName = false) { $file = $element->addChild('file'); if (!$omitFileName) { $file->fileName = substr($ref->getFileName(), strlen($this->docRoot)); } $file->startLine = $ref->getStartLine(); $file->endLine = $ref->getEndLine(); }
/** * @param \Reflector|\Nette\Reflection\ClassType|\Nette\Reflection\Method $refl * @param \Exception|\Throwable $e * @param int $startLine * * @return int|string */ public static function calculateErrorLine(\Reflector $refl, $e, $startLine = NULL) { if ($startLine === NULL) { $startLine = $refl->getStartLine(); } if ($pos = Strings::match($e->getMessage(), '~position\\s*(\\d+)~')) { $targetLine = self::calculateAffectedLine($refl, $pos[1]); } elseif ($notImported = Strings::match($e->getMessage(), '~^\\[Semantical Error\\]\\s+The annotation "([^"]*?)"~i')) { $parts = explode(self::findRenamed($refl, $notImported[1]), self::cleanedPhpDoc($refl), 2); $targetLine = self::calculateAffectedLine($refl, strlen($parts[0])); } elseif ($notFound = Strings::match($e->getMessage(), '~^\\[Semantical Error\\]\\s+Couldn\'t find\\s+(.*?)\\s+(.*?),\\s+~')) { // this is just a guess $parts = explode(self::findRenamed($refl, $notFound[2]), self::cleanedPhpDoc($refl), 2); $targetLine = self::calculateAffectedLine($refl, strlen($parts[0])); } else { $targetLine = self::calculateAffectedLine($refl, 1); } $phpDocLines = count(Strings::split($refl->getDocComment(), '~[\\n\\r]+~')); return $startLine - ($phpDocLines - ($targetLine - 1)); }
function annotateLocation(\Reflector $refl) { return array('file' => $refl->getFileName(), 'line' => $refl->getStartLine()); }
public function locateEmptyTestFailureSource() { return FailureSourceLocator::formatFileAndLine($this->reflection->getFileName(), $this->reflection->getStartLine()); }