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) ); }
/** * Returns annotations. * @param \ReflectionClass|\ReflectionMethod|\ReflectionProperty * @return array */ public static function getAll(\Reflector $r) { if ($r instanceof \ReflectionClass) { $type = $r->getName(); $member = ''; } elseif ($r instanceof \ReflectionMethod) { $type = $r->getDeclaringClass()->getName(); $member = $r->getName(); } else { $type = $r->getDeclaringClass()->getName(); $member = '$' . $r->getName(); } if (!self::$useReflection) { // auto-expire cache $file = $r instanceof \ReflectionClass ? $r->getFileName() : $r->getDeclaringClass()->getFileName(); // will be used later if ($file && isset(self::$timestamps[$file]) && self::$timestamps[$file] !== filemtime($file)) { unset(self::$cache[$type]); } unset(self::$timestamps[$file]); } if (isset(self::$cache[$type][$member])) { // is value cached? return self::$cache[$type][$member]; } if (self::$useReflection === NULL) { // detects whether is reflection available self::$useReflection = (bool) Nette\Reflection\ClassReflection::from(__CLASS__)->getDocComment(); } if (self::$useReflection) { return self::$cache[$type][$member] = self::parseComment($r->getDocComment()); } else { if (self::$cache === NULL) { self::$cache = (array) self::getCache()->offsetGet('list'); self::$timestamps = isset(self::$cache['*']) ? self::$cache['*'] : array(); } if (!isset(self::$cache[$type]) && $file) { self::$cache['*'][$file] = filemtime($file); self::parseScript($file); self::getCache()->save('list', self::$cache); } if (isset(self::$cache[$type][$member])) { return self::$cache[$type][$member]; } else { return self::$cache[$type][$member] = array(); } } }
/** * 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.'); } }
/** * Returns annotations. * @param \ReflectionClass|\ReflectionMethod|\ReflectionProperty * @return array */ public static function getAll(\Reflector $r) { if ($r instanceof \ReflectionClass) { $type = $r->getName(); $member = 'class'; } elseif ($r instanceof \ReflectionMethod) { $type = $r->getDeclaringClass()->getName(); $member = $r->getName(); } else { $type = $r->getDeclaringClass()->getName(); $member = '$' . $r->getName(); } if (!self::$useReflection) { // auto-expire cache $file = $r instanceof \ReflectionClass ? $r->getFileName() : $r->getDeclaringClass()->getFileName(); // will be used later if ($file && isset(self::$timestamps[$file]) && self::$timestamps[$file] !== filemtime($file)) { unset(self::$cache[$type]); } unset(self::$timestamps[$file]); } if (isset(self::$cache[$type][$member])) { // is value cached? return self::$cache[$type][$member]; } if (self::$useReflection === NULL) { // detects whether is reflection available self::$useReflection = (bool) ClassType::from(__CLASS__)->getDocComment(); } if (self::$useReflection) { $annotations = self::parseComment($r->getDocComment()); } else { if (!self::$cacheStorage) { // trigger_error('Set a cache storage for annotations parser via Nette\Reflection\AnnotationParser::setCacheStorage().', E_USER_WARNING); self::$cacheStorage = new Nette\Caching\Storages\DevNullStorage(); } $outerCache = new Nette\Caching\Cache(self::$cacheStorage, 'Nette.Reflection.Annotations'); if (self::$cache === NULL) { self::$cache = (array) $outerCache->load('list'); self::$timestamps = isset(self::$cache['*']) ? self::$cache['*'] : array(); } if (!isset(self::$cache[$type]) && $file) { self::$cache['*'][$file] = filemtime($file); foreach (self::parsePhp(file_get_contents($file)) as $class => $info) { foreach ($info as $prop => $comment) { if ($prop !== 'use') { self::$cache[$class][$prop] = self::parseComment($comment); } } } $outerCache->save('list', self::$cache); } if (isset(self::$cache[$type][$member])) { $annotations = self::$cache[$type][$member]; } else { $annotations = array(); } } if ($r instanceof \ReflectionMethod && !$r->isPrivate() && (!$r->isConstructor() || !empty($annotations['inheritdoc'][0]))) { try { $inherited = self::getAll(new \ReflectionMethod(get_parent_class($type), $member)); } catch (\ReflectionException $e) { try { $inherited = self::getAll($r->getPrototype()); } catch (\ReflectionException $e) { $inherited = array(); } } $annotations += array_intersect_key($inherited, array_flip(self::$inherited)); } return self::$cache[$type][$member] = $annotations; }
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(); }
private function isValidTestFile(\Reflector $reflector, array $testFiles) { return in_array($reflector->getFileName(), $testFiles) && isValidTestName($reflector->getShortName()); }
static function getAll(\Reflector $r) { if ($r instanceof \ReflectionClass) { $type = $r->getName(); $member = ''; } elseif ($r instanceof \ReflectionMethod) { $type = $r->getDeclaringClass()->getName(); $member = $r->getName(); } else { $type = $r->getDeclaringClass()->getName(); $member = '$' . $r->getName(); } if (!self::$useReflection) { $file = $r instanceof \ReflectionClass ? $r->getFileName() : $r->getDeclaringClass()->getFileName(); if ($file && isset(self::$timestamps[$file]) && self::$timestamps[$file] !== filemtime($file)) { unset(self::$cache[$type]); } unset(self::$timestamps[$file]); } if (isset(self::$cache[$type][$member])) { return self::$cache[$type][$member]; } if (self::$useReflection === NULL) { self::$useReflection = (bool) ClassType::from(__CLASS__)->getDocComment(); } if (self::$useReflection) { $annotations = self::parseComment($r->getDocComment()); } else { if (!self::$cacheStorage) { self::$cacheStorage = new Nette\Caching\Storages\DevNullStorage(); } $outerCache = new Nette\Caching\Cache(self::$cacheStorage, 'Nette.Reflection.Annotations'); if (self::$cache === NULL) { self::$cache = (array) $outerCache->offsetGet('list'); self::$timestamps = isset(self::$cache['*']) ? self::$cache['*'] : array(); } if (!isset(self::$cache[$type]) && $file) { self::$cache['*'][$file] = filemtime($file); self::parseScript($file); $outerCache->save('list', self::$cache); } if (isset(self::$cache[$type][$member])) { $annotations = self::$cache[$type][$member]; } else { $annotations = array(); } } if ($r instanceof \ReflectionMethod && !$r->isPrivate() && (!$r->isConstructor() || !empty($annotations['inheritdoc'][0]))) { try { $inherited = self::getAll(new \ReflectionMethod(get_parent_class($type), $member)); } catch (\ReflectionException $e) { try { $inherited = self::getAll($r->getPrototype()); } catch (\ReflectionException $e) { $inherited = array(); } } $annotations += array_intersect_key($inherited, array_flip(self::$inherited)); } return self::$cache[$type][$member] = $annotations; }
static function getAll(Reflector $r) { if ($r instanceof ReflectionClass) { $type = $r->getName(); $member = ''; } elseif ($r instanceof ReflectionMethod) { $type = $r->getDeclaringClass()->getName(); $member = $r->getName(); } else { $type = $r->getDeclaringClass()->getName(); $member = '$' . $r->getName(); } if (!self::$useReflection) { $file = $r instanceof ReflectionClass ? $r->getFileName() : $r->getDeclaringClass()->getFileName(); if ($file && isset(self::$timestamps[$file]) && self::$timestamps[$file] !== filemtime($file)) { unset(self::$cache[$type]); } unset(self::$timestamps[$file]); } if (isset(self::$cache[$type][$member])) { return self::$cache[$type][$member]; } if (self::$useReflection === NULL) { self::$useReflection = (bool) NClassReflection::from(__CLASS__)->getDocComment(); } if (self::$useReflection) { return self::$cache[$type][$member] = self::parseComment($r->getDocComment()); } else { if (self::$cache === NULL) { self::$cache = (array) self::getCache()->offsetGet('list'); self::$timestamps = isset(self::$cache['*']) ? self::$cache['*'] : array(); } if (!isset(self::$cache[$type]) && $file) { self::$cache['*'][$file] = filemtime($file); self::parseScript($file); self::getCache()->save('list', self::$cache); } if (isset(self::$cache[$type][$member])) { return self::$cache[$type][$member]; } else { return self::$cache[$type][$member] = array(); } } }
function annotateLocation(\Reflector $refl) { return array('file' => $refl->getFileName(), 'line' => $refl->getStartLine()); }
public function locateEmptyTestFailureSource() { return FailureSourceLocator::formatFileAndLine($this->reflection->getFileName(), $this->reflection->getStartLine()); }
/** * Returns annotations. * @param \ReflectionClass|\ReflectionMethod|\ReflectionProperty * @return array */ public static function getAll(\Reflector $r) { if ($r instanceof \ReflectionClass) { $type = $r->getName(); $member = 'class'; $file = $r->getFileName(); } elseif ($r instanceof \ReflectionMethod) { $type = $r->getDeclaringClass()->getName(); $member = $r->getName(); $file = $r->getFileName(); } elseif ($r instanceof \ReflectionFunction) { $type = NULL; $member = $r->getName(); $file = $r->getFileName(); } else { $type = $r->getDeclaringClass()->getName(); $member = '$' . $r->getName(); $file = $r->getDeclaringClass()->getFileName(); } if (!self::$useReflection) { // auto-expire cache if ($file && isset(self::$timestamps[$file]) && self::$timestamps[$file] !== filemtime($file)) { unset(self::$cache[$type]); } unset(self::$timestamps[$file]); } if (isset(self::$cache[$type][$member])) { // is value cached? return self::$cache[$type][$member]; } if (self::$useReflection === NULL) { // detects whether is reflection available self::$useReflection = (bool) ClassType::from(__CLASS__)->getDocComment(); } if (self::$useReflection) { $annotations = self::parseComment($r->getDocComment()); } else { $outerCache = self::getCache(); if (self::$cache === NULL) { self::$cache = (array) $outerCache->load('list'); self::$timestamps = isset(self::$cache['*']) ? self::$cache['*'] : []; } if (!isset(self::$cache[$type]) && $file) { self::$cache['*'][$file] = filemtime($file); foreach (static::parsePhp(file_get_contents($file)) as $class => $info) { foreach ($info as $prop => $comment) { if ($prop !== 'use') { self::$cache[$class][$prop] = self::parseComment($comment); } } } $outerCache->save('list', self::$cache); } if (isset(self::$cache[$type][$member])) { $annotations = self::$cache[$type][$member]; } else { $annotations = []; } } if ($r instanceof \ReflectionMethod && !$r->isPrivate() && (!$r->isConstructor() || !empty($annotations['inheritdoc'][0]))) { try { $inherited = self::getAll(new \ReflectionMethod(get_parent_class($type), $member)); } catch (\ReflectionException $e) { try { $inherited = self::getAll($r->getPrototype()); } catch (\ReflectionException $e) { $inherited = []; } } $annotations += array_intersect_key($inherited, array_flip(self::$inherited)); } return self::$cache[$type][$member] = $annotations; }